You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-24 19:49:22 +02:00
Дополнение словаря
This commit is contained in:
15434
service/dictionaries/en.json
vendored
15434
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
64
src/ru/OInt/core/Modules/OPI_GoogleDrive.os
vendored
64
src/ru/OInt/core/Modules/OPI_GoogleDrive.os
vendored
@@ -146,7 +146,7 @@
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// Файл - ДвоичныеДанные,Строка - Загружаемый файл - file
|
||||
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props - JSON описания или путь к .json
|
||||
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||
@@ -622,29 +622,39 @@
|
||||
|
||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
||||
Ответ = OPI_ЗапросыHTTP.PatchСТелом(URL, Описание, Заголовки, Истина, Истина);
|
||||
Метод = "PATCH";
|
||||
Иначе
|
||||
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Описание, Заголовки, Истина, Истина);
|
||||
Метод = "POST";;
|
||||
КонецЕсли;
|
||||
|
||||
HttpКлиент = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(URL);
|
||||
|
||||
Ответ = HttpКлиент.УстановитьЗаголовки(Заголовки)
|
||||
.УстановитьJsonТело(Описание)
|
||||
.ОбработатьЗапрос(Метод)
|
||||
.ВернутьОтвет(Ложь, Истина);
|
||||
|
||||
АдресЗагрузки = Ответ.Заголовки["Location"];
|
||||
|
||||
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
|
||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||
Возврат Ответ;
|
||||
Возврат HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
ОтветЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
||||
Ответ = ?(ЗначениеЗаполнено(ОтветЗагрузки), ОтветЗагрузки, Ответ);
|
||||
HttpКлиентЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
||||
|
||||
Если HttpКлиентЗагрузки <> Неопределено Тогда
|
||||
Ответ = HttpКлиентЗагрузки.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
|
||||
Иначе
|
||||
Ответ = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗагрузитьФайлЧастями(Знач Двоичные, Знач АдресЗагрузки)
|
||||
|
||||
Ответ = "";
|
||||
HttpКлиент = Неопределено;
|
||||
РазмерЧасти = 268435456;
|
||||
ПрочитаноБайт = 0;
|
||||
ТекущаяПозиция = 0;
|
||||
@@ -677,11 +687,16 @@
|
||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||
ДопЗаголовки.Вставить("Content-Type" , "application/octet-stream");
|
||||
|
||||
Ответ = OPI_ЗапросыHTTP.PutСТелом(АдресЗагрузки, ТекущиеДанные, ДопЗаголовки, Ложь, Истина);
|
||||
HttpКлиент = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать(АдресЗагрузки)
|
||||
.УстановитьЗаголовки(ДопЗаголовки)
|
||||
.УстановитьДвоичноеТело(ТекущиеДанные)
|
||||
.ОбработатьЗапрос("PUT");
|
||||
|
||||
РезультатПроверки = ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
||||
РезультатПроверки = ПроверитьЗагрузкуЧасти(HttpКлиент, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
||||
|
||||
Если ЗначениеЗаполнено(РезультатПроверки) Тогда
|
||||
Если РезультатПроверки <> Неопределено Тогда
|
||||
Возврат РезультатПроверки;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -694,11 +709,11 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат HttpКлиент;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
||||
Функция ПроверитьЗагрузкуЧасти(HttpКлиент, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
||||
|
||||
НачалоКодовОшибок = 400;
|
||||
КонецКодовПадений = 600;
|
||||
@@ -706,17 +721,21 @@
|
||||
КонецКодовУспеха = 300;
|
||||
Перенаправление = 308;
|
||||
|
||||
Ответ = HttpКлиент.ВернутьОтвет(Ложь, Истина);
|
||||
|
||||
Если Ответ.КодСостояния >= НачалоКодовОшибок И Ответ.КодСостояния < КонецКодовПадений Тогда
|
||||
|
||||
ЗаголовокПотока = "bytes */" + СтрОбщийРазмер;
|
||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||
|
||||
ОтветПроверки = OPI_ЗапросыHTTP.PutСТелом(АдресЗагрузки, "", ДопЗаголовки, Ложь, Истина);
|
||||
HttpКлиентПроверки = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(АдресЗагрузки);
|
||||
ОтветПроверки = HttpКлиентПроверки.УстановитьЗаголовки(ДопЗаголовки)
|
||||
.ОбработатьЗапрос("PUT")
|
||||
.ВернутьОтвет(Ложь, Истина);
|
||||
|
||||
Если ОтветПроверки.КодСостояния >= НачалоКодовУспеха И ОтветПроверки.КодСостояния < КонецКодовУспеха Тогда
|
||||
|
||||
OPI_Инструменты.ОбработатьОтвет(ОтветПроверки);
|
||||
Возврат ОтветПроверки;
|
||||
Возврат HttpКлиентПроверки;
|
||||
|
||||
ИначеЕсли ОтветПроверки.КодСостояния = Перенаправление Тогда
|
||||
|
||||
@@ -724,8 +743,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||
Возврат Ответ;
|
||||
Возврат HttpКлиент;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -734,8 +752,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ЗагруженныеДанные) Тогда
|
||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||
Возврат Ответ;
|
||||
Возврат HttpКлиент;
|
||||
КонецЕсли;
|
||||
|
||||
ЗагруженныеДанные = СтрЗаменить(ЗагруженныеДанные, "bytes=", "");
|
||||
@@ -743,13 +760,12 @@
|
||||
НеобходимоЧастей = 2;
|
||||
|
||||
Если Не МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||
Возврат Ответ;
|
||||
Возврат HttpКлиент;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущаяПозиция = Число(МассивИнформации[1]) + 1;
|
||||
|
||||
Возврат "";
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
19
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
19
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -924,6 +924,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста);
|
||||
|
||||
ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив);
|
||||
|
||||
@@ -5778,6 +5779,24 @@
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_File", Идентификатор);
|
||||
OPI_Инструменты.ДобавитьПоле("GD_File", Идентификатор, "Строка", ПараметрыФункции);
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоOneScript() Тогда
|
||||
|
||||
БольшойФайл = ПараметрыФункции["Big"];
|
||||
Описание.Вставить("Имя", "big.rar");
|
||||
|
||||
Результат = OPI_GoogleDrive.ЗагрузитьФайл(Токен, БольшойФайл, Описание);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл (большой)", "GoogleDrive");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ГуглОбъект(Результат, Описание);
|
||||
|
||||
Идентификатор = Результат["id"];
|
||||
|
||||
МассивУдаляемых = ПараметрыФункции["МассивУдаляемых"];
|
||||
МассивУдаляемых.Добавить(Идентификатор);
|
||||
ПараметрыФункции.Вставить("МассивУдаляемых", МассивУдаляемых);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура GoogleDrive_СкопироватьОбъект(ПараметрыФункции)
|
||||
|
@@ -166,7 +166,7 @@
|
||||
OPI_Инструменты.ВернутьУправляющиеПоследовательности(URL);
|
||||
|
||||
Если ПолучитьНастройку("КодировкаURL") Тогда
|
||||
OPI_Инструменты.КодироватьURLВURL(URL);
|
||||
КодироватьURLВURL(URL);
|
||||
КонецЕсли;
|
||||
|
||||
ЗапросURL = URL;
|
||||
@@ -2218,6 +2218,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура КодироватьURLВURL(URL) Экспорт
|
||||
|
||||
Заглушка = СтрШаблон("@#%1#@", Строка(Новый УникальныйИдентификатор));
|
||||
|
||||
URL = СтрЗаменить(URL, "&", Заглушка);
|
||||
URL = КодироватьСтроку(URL, СпособКодированияСтроки.URLВКодировкеURL);
|
||||
URL = СтрЗаменить(URL, Заглушка, "&");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ШаблонФункции()
|
||||
|
||||
Попытка
|
||||
|
@@ -42,63 +42,6 @@
|
||||
|
||||
#Область РаботаССетью
|
||||
|
||||
Процедура ОбработатьОтвет(Ответ, Знач ПолныйОтвет = Ложь) Экспорт
|
||||
|
||||
Если ПолныйОтвет Или ТипЗнч(Ответ) <> Тип("HTTPОтвет") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ФайлТела = Ответ.ПолучитьИмяФайлаТела();
|
||||
|
||||
Если Не ФайлТела = Неопределено Тогда
|
||||
|
||||
Ответ = ФайлТела;
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
GZip = "gzip";
|
||||
|
||||
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = GZip
|
||||
Или Ответ.Заголовки.Получить("content-encoding") = GZip;
|
||||
|
||||
Если НужнаРаспаковка Тогда
|
||||
Ответ = РаспаковатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = ?(ТипЗнч(Ответ) = Тип("HTTPОтвет"), Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ);
|
||||
|
||||
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
Если Ответ.Размер() = 0 Тогда
|
||||
|
||||
Ответ = ПолучитьДвоичныеДанныеИзСтроки("{}");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = JsonВСтруктуру(Ответ);
|
||||
|
||||
Исключение
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура КодироватьURLВURL(URL) Экспорт
|
||||
|
||||
ЭтоOS = ЭтоOneScript();
|
||||
Заглушка = СтрШаблон("@#%1#@", Строка(Новый УникальныйИдентификатор));
|
||||
|
||||
URL = СтрЗаменить(URL, "&" , Заглушка);
|
||||
URL = КодироватьСтроку(URL, СпособКодированияСтроки.URLВКодировкеURL);
|
||||
URL = СтрЗаменить(URL, Заглушка, "&");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПараметрыЗапросаВСтроку(Знач Параметры, Знач ОтдельныеЭлементыМассивов = Ложь, Знач Начало = Истина) Экспорт
|
||||
|
||||
Если Параметры.Количество() = 0 Тогда
|
||||
@@ -1178,204 +1121,4 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область GZip
|
||||
|
||||
// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
|
||||
// Источник: https://github.com/vbondarevsky/Connector
|
||||
|
||||
// Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
|
||||
//
|
||||
// Copyright 2017-2023 Vladimir Bondarevskiy
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//
|
||||
// URL: https://github.com/vbondarevsky/Connector
|
||||
// e-mail: vbondarevsky@gmail.com
|
||||
// Версия: 2.4.8
|
||||
//
|
||||
// Требования: платформа 1С версии 8.3.10 и выше
|
||||
|
||||
Функция РаспаковатьОтвет(Ответ)
|
||||
|
||||
Попытка
|
||||
Возврат ПрочитатьGZip(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
||||
Исключение
|
||||
Возврат Ответ;
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПрочитатьGZip(СжатыеДанные) Экспорт
|
||||
|
||||
РазмерПрефиксаGZip = 10;
|
||||
РазмерПостфиксаGZip = 8;
|
||||
|
||||
РазмерДД = ZipРазмерDD();
|
||||
РазмерСДХ = ZipРазмерCDH();
|
||||
РазмерЕСД = ZipРазмерEOCD();
|
||||
РазмерЛФХ = ZipРазмерLFH();
|
||||
|
||||
ЧтениеДанных = Новый ЧтениеДанных(СжатыеДанные);
|
||||
ЧтениеДанных.Пропустить(РазмерПрефиксаGZip);
|
||||
РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip;
|
||||
|
||||
ПотокZip = Новый ПотокВПамяти(РазмерЛФХ + РазмерСжатыхДанных + РазмерДД + РазмерСДХ + РазмерЕСД);
|
||||
|
||||
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
|
||||
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH());
|
||||
ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных);
|
||||
|
||||
ЗаписьДанных.Закрыть();
|
||||
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
|
||||
|
||||
CRC32 = ЧтениеДанных.ПрочитатьЦелое32();
|
||||
РазмерНесжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32();
|
||||
ЧтениеДанных.Закрыть();
|
||||
|
||||
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipDD(CRC32 , РазмерСжатыхДанных, РазмерНесжатыхДанных));
|
||||
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных));
|
||||
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipEOCD(РазмерСжатыхДанных));
|
||||
ЗаписьДанных.Закрыть();
|
||||
|
||||
Возврат ПрочитатьZip(ПотокZip);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПрочитатьZip(СжатыеДанные, ТекстОшибки = Неопределено)
|
||||
|
||||
Каталог = ПолучитьИмяВременногоФайла();
|
||||
ЧтениеZip = Новый ЧтениеZipФайла(СжатыеДанные);
|
||||
ИмяФайла = ЧтениеZip.Элементы[0].Имя;
|
||||
Попытка
|
||||
ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
|
||||
Исключение
|
||||
// Игнорируем проверку целостности архива, просто читаем результат
|
||||
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
ЧтениеZip.Закрыть();
|
||||
|
||||
Результат = Новый ДвоичныеДанные(Каталог + ПолучитьРазделительПути() + ИмяФайла);
|
||||
УдалитьФайлы(Каталог);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipРазмерLFH()
|
||||
|
||||
Возврат 34;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipРазмерDD()
|
||||
|
||||
Возврат 16;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipРазмерCDH()
|
||||
|
||||
Возврат 50;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipРазмерEOCD()
|
||||
|
||||
Возврат 22;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipLFH()
|
||||
|
||||
// Local file header
|
||||
Буфер = Новый БуферДвоичныхДанных(ZipРазмерLFH());
|
||||
Буфер.ЗаписатьЦелое32(0, 67324752); // signature 0x04034b50
|
||||
Буфер.ЗаписатьЦелое16(4, 20); // version
|
||||
Буфер.ЗаписатьЦелое16(6, 10); // bit flags
|
||||
Буфер.ЗаписатьЦелое16(8, 8); // compression method
|
||||
Буфер.ЗаписатьЦелое16(10, 0); // time
|
||||
Буфер.ЗаписатьЦелое16(12, 0); // date
|
||||
Буфер.ЗаписатьЦелое32(14, 0); // crc-32
|
||||
Буфер.ЗаписатьЦелое32(18, 0); // compressed size
|
||||
Буфер.ЗаписатьЦелое32(22, 0); // uncompressed size
|
||||
Буфер.ЗаписатьЦелое16(26, 4); // filename legth - "data"
|
||||
Буфер.ЗаписатьЦелое16(28, 0); // extra field length
|
||||
Буфер.Записать(30, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь));
|
||||
|
||||
Возврат Буфер;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)
|
||||
|
||||
// Data descriptor
|
||||
Буфер = Новый БуферДвоичныхДанных(ZipРазмерDD());
|
||||
Буфер.ЗаписатьЦелое32(0, 134695760);
|
||||
Буфер.ЗаписатьЦелое32(4, CRC32);
|
||||
Буфер.ЗаписатьЦелое32(8, РазмерСжатыхДанных);
|
||||
Буфер.ЗаписатьЦелое32(12, РазмерНесжатыхДанных);
|
||||
|
||||
Возврат Буфер;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)
|
||||
|
||||
// Central directory header
|
||||
Буфер = Новый БуферДвоичныхДанных(ZipРазмерCDH());
|
||||
Буфер.ЗаписатьЦелое32(0, 33639248); // signature 0x02014b50
|
||||
Буфер.ЗаписатьЦелое16(4, 798); // version made by
|
||||
Буфер.ЗаписатьЦелое16(6, 20); // version needed to extract
|
||||
Буфер.ЗаписатьЦелое16(8, 10); // bit flags
|
||||
Буфер.ЗаписатьЦелое16(10, 8); // compression method
|
||||
Буфер.ЗаписатьЦелое16(12, 0); // time
|
||||
Буфер.ЗаписатьЦелое16(14, 0); // date
|
||||
Буфер.ЗаписатьЦелое32(16, CRC32); // crc-32
|
||||
Буфер.ЗаписатьЦелое32(20, РазмерСжатыхДанных); // compressed size
|
||||
Буфер.ЗаписатьЦелое32(24, РазмерНесжатыхДанных); // uncompressed size
|
||||
Буфер.ЗаписатьЦелое16(28, 4); // file name length
|
||||
Буфер.ЗаписатьЦелое16(30, 0); // extra field length
|
||||
Буфер.ЗаписатьЦелое16(32, 0); // file comment length
|
||||
Буфер.ЗаписатьЦелое16(34, 0); // disk number start
|
||||
Буфер.ЗаписатьЦелое16(36, 0); // internal file attributes
|
||||
Буфер.ЗаписатьЦелое32(38, 2176057344); // external file attributes
|
||||
Буфер.ЗаписатьЦелое32(42, 0); // relative offset of local header
|
||||
Буфер.Записать(46, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь));
|
||||
|
||||
Возврат Буфер;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ZipEOCD(РазмерСжатыхДанных)
|
||||
|
||||
// End of central directory
|
||||
РазмерCDH = 50;
|
||||
Буфер = Новый БуферДвоичныхДанных(ZipРазмерEOCD());
|
||||
Буфер.ЗаписатьЦелое32(0, 101010256); // signature 0x06054b50
|
||||
Буфер.ЗаписатьЦелое16(4, 0); // number of this disk
|
||||
Буфер.ЗаписатьЦелое16(6, 0); // number of the disk with the start of the central directory
|
||||
Буфер.ЗаписатьЦелое16(8, 1); // total number of entries in the central directory on this disk
|
||||
Буфер.ЗаписатьЦелое16(10, 1); // total number of entries in the central directory
|
||||
Буфер.ЗаписатьЦелое32(12, РазмерCDH); // size of the central directory
|
||||
// offset of start of central directory with respect to the starting disk number
|
||||
Буфер.ЗаписатьЦелое32(16, ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD());
|
||||
Буфер.ЗаписатьЦелое16(20, 0); // the starting disk number
|
||||
|
||||
Возврат Буфер;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Reference in New Issue
Block a user