1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-25 22:12:29 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-08-02 20:59:16 +03:00
parent b77b1a1dad
commit 7c2d89f7e4
34 changed files with 9429 additions and 8529 deletions

1
docs/en/data/FTP/GetObjectSize.json vendored Normal file
View File

@@ -0,0 +1 @@
{"Host":"172.33.0.10","Port":21,"Login":"bayselonarrend","Password":"12we...","ProxyType":"http","ProxyAddress":"127.0.0.1","ProxyPort":8071,"ProxyLogin":"proxyuser","ProxyPassword":"12we..."}

37
docs/en/examples/FTP/GetObjectSize.txt vendored Normal file
View File

@@ -0,0 +1,37 @@
 Host = "172.33.0.10";
Port = "21";
Login = "bayselonarrend";
Password = "12we...";
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = "http"; // http, socks5, socks4
ProxyAddress = "127.0.0.1";
ProxyPort = "8071";
ProxyLogin = "proxyuser";
ProxyPassword = "12we...";
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/big.bin");
Else
Result = Connection; // Error of connection
EndIf;

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 7
description: Get connection settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 5
description: Get object size and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get object size
Get the size of a file or directory if it exists
`Function GetObjectSize(Val Connection, Val Path) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Connection | --conn | Arbitrary | ✔ | Existing connection or connection configuration |
| Path | --path | String | ✔ | Path to the object |
Returns: Map Of KeyAndValue - Processing result
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Host = "172.33.0.10";
Port = "21";
Login = "bayselonarrend";
Password = "12we...";
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = "http"; // http, socks5, socks4
ProxyAddress = "127.0.0.1";
ProxyPort = "8071";
ProxyLogin = "proxyuser";
ProxyPassword = "12we...";
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/big.bin");
Else
Result = Connection; // Error of connection
EndIf;
```

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 7
sidebar_position: 8
description: Get proxy settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
description: Get TLS Settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
description: Is connector and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---

View File

@@ -18,7 +18,7 @@ import TabItem from '@theme/TabItem';
|-|-|-|-|-|
| Connection | --conn | Arbitrary | &#x2714; | Existing connection or connection configuration |
| Path | --path | String | &#x2716; | Path to search directory |
| Recursively | --rcv | Boolean | &#x2716; | Get information about elements in nested directories |
| Recursively | --rcv | Boolean | &#x2716; | Get information about objects in nested directories |
Returns: Map Of KeyAndValue - Processing result

View File

@@ -0,0 +1 @@
{"Хост":"172.33.0.10","Порт":21,"Логин":"bayselonarrend","Пароль":"12we...","ТипПрокси":"http","АдресПрокси":"127.0.0.1","ПортПрокси":8071,"ЛогинПрокси":"proxyuser","ПарольПрокси":"12we..."}

View File

@@ -0,0 +1,37 @@
 Хост = "172.33.0.10";
Порт = "21";
Логин = "bayselonarrend";
Пароль = "12we...";
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = "http"; // http, socks5, socks4
АдресПрокси = "127.0.0.1";
ПортПрокси = "8071";
ЛогинПрокси = "proxyuser";
ПарольПрокси = "12we...";
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/big.bin");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 7
description: Получить настройки соединения и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 5
description: Получить размер объекта и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить размер объекта
Получает размер файла или директории, если она существуют
`Функция ПолучитьРазмерОбъекта(Знач Соединение, Знач Путь) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Соединение | --conn | Произвольный | &#x2714; | Существующее соединение или конфигурация соединения |
| Путь | --path | Строка | &#x2714; | Путь к объекту |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Хост = "172.33.0.10";
Порт = "21";
Логин = "bayselonarrend";
Пароль = "12we...";
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = "http"; // http, socks5, socks4
АдресПрокси = "127.0.0.1";
ПортПрокси = "8071";
ЛогинПрокси = "proxyuser";
ПарольПрокси = "12we...";
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/big.bin");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
```

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 7
sidebar_position: 8
description: Получить настройки прокси и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
description: Получить настройки TLS и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---

View File

@@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
description: Это коннектор и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---

View File

@@ -68,6 +68,34 @@ import TabItem from '@theme/TabItem';
```
<Tabs>
<TabItem value="bash" label="Bash" default>
```bash
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp ОчиститьДиректорию \
--set "{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}" \
--proxy "{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}" \
--tls "{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}" \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "."
```
</TabItem>
<TabItem value="bat" label="CMD/Bat" default>
```batch
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp ОчиститьДиректорию ^
--set "{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}" ^
--proxy "{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}" ^
--tls "{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}" ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "."
```
</TabItem>
</Tabs>

View File

@@ -77,7 +77,7 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp СоздатьДиректорию \
--conn "{'set':{'domain':'127.0.0.1','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}}" \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "second_dir/another_one"
```
</TabItem>
@@ -87,7 +87,7 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp СоздатьДиректорию ^
--conn "{'set':{'domain':'127.0.0.1','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}}" ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "second_dir/another_one"
```
</TabItem>

View File

@@ -75,8 +75,11 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьДиректорию \
--conn "{'set':{'domain':'127.0.0.1','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}}" \
--path "new_dir"
--set "{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}" \
--proxy "{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}" \
--tls "{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}" \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "new_dir/another_one"
```
</TabItem>
@@ -85,8 +88,11 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьДиректорию ^
--conn "{'set':{'domain':'127.0.0.1','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}}" ^
--path "new_dir"
--set "{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'}" ^
--proxy "{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}" ^
--tls "{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}" ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "new_dir/another_one"
```
</TabItem>
</Tabs>

View File

@@ -18,7 +18,7 @@ import TabItem from '@theme/TabItem';
|-|-|-|-|-|
| Соединение | --conn | Произвольный | &#x2714; | Существующее соединение или конфигурация соединения |
| Путь | --path | Строка | &#x2716; | Путь к директории поиска |
| Рекурсивно | --rcv | Булево | &#x2716; | Получать информацию об элементах во вложенных директориях |
| Рекурсивно | --rcv | Булево | &#x2716; | Получать информацию об объектах во вложенных директориях |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки

File diff suppressed because it is too large Load Diff

View File

@@ -162,6 +162,38 @@ Function GetWelcomeMessage(Val Connection) Export
EndFunction
// Get object size
// Get the size of a file or directory if it exists
//
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to the object - path
//
// Returns:
// Map Of KeyAndValue - Processing result
Function GetObjectSize(Val Connection, Val Path) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Path);
Result = Connection.GetObjectSize(Path);
Result = OPI_Tools.JsonToStructure(Result);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an AddIn object for working with FTP
//
@@ -296,7 +328,7 @@ EndFunction
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to search directory - path
// Recursively - Boolean - Get information about elements in nested directories - rcv
// Recursively - Boolean - Get information about objects in nested directories - rcv
//
// Returns:
// Map Of KeyAndValue - Processing result
@@ -318,30 +350,30 @@ Function ListObjects(Val Connection, Val Path = "", Val Recursively = False) Exp
If Result["result"] Then
ElementList = Result["data"];
ObjectList = Result["data"];
For Each Element In ElementList Do
For Each Object In ObjectList Do
ElementName = Element["name"];
ObjectName = Object["name"];
If ValueIsFilled(Path) Then
ElementPath = StrTemplate("%1/%2", Path, ElementName);
ObjectPath = StrTemplate("%1/%2", Path, ObjectName);
Else
ElementPath = ElementName;
ObjectPath = ObjectName;
EndIf;
Element.Insert("path", ElementPath);
Object.Insert("path", ObjectPath);
If Recursively Then
If Element["is_directory"] Then
If Object["is_directory"] Then
ResultSubdirectory = ListObjects(Connection, ElementPath, True);
ResultSubdirectory = ListObjects(Connection, ObjectPath, True);
If Not ResultSubdirectory["result"] Then
Result = ResultSubdirectory;
Break;
Else
Element.Insert("elements", ResultSubdirectory["data"]);
Object.Insert("objects", ResultSubdirectory["data"]);
EndIf;
EndIf;
@@ -351,7 +383,7 @@ Function ListObjects(Val Connection, Val Path = "", Val Recursively = False) Exp
Result = New Map;
Result.Insert("result", True);
Result.Insert("data" , ElementList);
Result.Insert("data" , ObjectList);
EndIf;
@@ -655,20 +687,20 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent
Primary = False;
EndIf;
NestedItems = ListObjects(Connection, Path, True);
NeedParts = ListObjects(Connection, Path, True);
If NestedItems["result"] Then
For Each Element In NestedItems["data"] Do
If NeedParts["result"] Then
For Each Object In NeedParts["data"] Do
ElementPath = Element["path"];
ObjectPath = Object["path"];
If Element["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeleteCurrent, DeletedArray);
If Object["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ObjectPath, DeleteCurrent, DeletedArray);
Else
Deletion = DeleteFile(Connection, ElementPath);
Deletion = DeleteFile(Connection, ObjectPath);
EndIf;
Deletion.Insert("path", ElementPath);
Deletion.Insert("path", ObjectPath);
DeletedArray.Add(Deletion);
EndDo;
@@ -683,7 +715,7 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent
EndIf;
If Primary Then
Result.Insert("deleted_elements", DeletedArray);
Result.Insert("deleted_objects", DeletedArray);
EndIf;
Return Result;
@@ -748,6 +780,10 @@ Function ПолучитьПриветственноеСообщение(Val Со
Return GetWelcomeMessage(Соединение);
EndFunction
Function ПолучитьРазмерОбъекта(Val Соединение, Val Путь) Export
Return GetObjectSize(Соединение, Путь);
EndFunction
Function ЭтоКоннектор(Val Значение) Export
Return IsConnector(Значение);
EndFunction

View File

@@ -2880,6 +2880,7 @@ Procedure FT_CommonMethods() Export
FTP_GetConnectionSettings(TestParameters);
FTP_GetProxySettings(TestParameters);
FTP_GetTlsSettings(TestParameters);
FTP_GetObjectSize(TestParameters);
EndDo;
@@ -25184,7 +25185,7 @@ Procedure FTP_CreateDirectory(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Check, "CreateDirectory (check 2)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"] , 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["elements"], 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["objects"], 1);
EndProcedure
@@ -25307,6 +25308,7 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (bd)" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (file size)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_ResultTrue(Result2);
@@ -25314,6 +25316,15 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/pic_from_disk.png");
Result2 = OPI_FTP.GetObjectSize(Connection, "pic_from_binary.png");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (size 1)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.WriteLog(Result2, "UploadFile (size 2)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"] , ImageDD.Size());
For N = 1 To 7 Do
Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png");
@@ -25525,6 +25536,63 @@ Procedure FTP_ClearDirectory(FunctionParameters)
EndProcedure
Procedure FTP_GetObjectSize(FunctionParameters)
Host = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/big.bin");
Else
Result = Connection; // Error of connection
EndIf;
// END
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLog(Result, "GetObjectSize" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/another.bin");
OPI_TestDataRetrieval.WriteLog(Result, "GetObjectSize (notexisted)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -2777,6 +2777,7 @@ Procedure CLI_FT_CommonMethods() Export
CLI_FTP_GetConnectionSettings(TestParameters);
CLI_FTP_GetProxySettings(TestParameters);
CLI_FTP_GetTlsSettings(TestParameters);
CLI_FTP_GetObjectSize(TestParameters);
EndDo;
@@ -26733,7 +26734,7 @@ Procedure CLI_FTP_CreateDirectory(FunctionParameters)
OPI_TestDataRetrieval.WriteLogCLI(Check, "CreateDirectory (check 2)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"] , 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["elements"], 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["objects"], 1);
EndProcedure
@@ -26986,6 +26987,7 @@ Procedure CLI_FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (bd)" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (file size)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_ResultTrue(Result2);
@@ -26993,6 +26995,22 @@ Procedure CLI_FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
Options.Insert("conn", Connection);
Options.Insert("path", "new_dir/pic_from_disk.png");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
Options.Insert("conn", Connection);
Options.Insert("path", "pic_from_binary.png");
Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (size 1)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.WriteLogCLI(Result2, "UploadFile (size 2)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"] , ImageDD.Size());
For N = 1 To 20 Do
Options = New Structure;
@@ -27146,6 +27164,86 @@ Procedure CLI_FTP_DeleteFile(FunctionParameters)
EndProcedure
Procedure CLI_FTP_GetObjectSize(FunctionParameters)
Domain = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
Options = New Structure;
Options.Insert("host" , Domain);
Options.Insert("port" , Port);
Options.Insert("login", Login);
Options.Insert("pass" , Password);
FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
Options = New Structure;
Options.Insert("addr" , ProxyAddress);
Options.Insert("port" , ProxyPort);
Options.Insert("type" , ProxyType);
Options.Insert("login", ProxyLogin);
Options.Insert("pass" , ProxyPassword);
ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options);
EndIf;
If FTPS Then
Options = New Structure;
Options.Insert("trust", True);
TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTlsSettings", Options);
EndIf;
Options = New Structure;
Options.Insert("set", FTPSettings);
Options = New Structure;
Options.Insert("set" , FTPSettings);
Options.Insert("proxy", ProxySettings);
Options.Insert("tls" , TLSSettings);
Connection = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionConfiguration", Options);
Options.Insert("conn", Connection);
Options.Insert("path", "new_dir/big.bin");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetObjectSize" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/another.bin");
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetObjectSize (notexisted)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -162,6 +162,38 @@ Function GetWelcomeMessage(Val Connection) Export
EndFunction
// Get object size
// Get the size of a file or directory if it exists
//
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to the object - path
//
// Returns:
// Map Of KeyAndValue - Processing result
Function GetObjectSize(Val Connection, Val Path) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Path);
Result = Connection.GetObjectSize(Path);
Result = OPI_Tools.JsonToStructure(Result);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an AddIn object for working with FTP
//
@@ -296,7 +328,7 @@ EndFunction
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to search directory - path
// Recursively - Boolean - Get information about elements in nested directories - rcv
// Recursively - Boolean - Get information about objects in nested directories - rcv
//
// Returns:
// Map Of KeyAndValue - Processing result
@@ -318,30 +350,30 @@ Function ListObjects(Val Connection, Val Path = "", Val Recursively = False) Exp
If Result["result"] Then
ElementList = Result["data"];
ObjectList = Result["data"];
For Each Element In ElementList Do
For Each Object In ObjectList Do
ElementName = Element["name"];
ObjectName = Object["name"];
If ValueIsFilled(Path) Then
ElementPath = StrTemplate("%1/%2", Path, ElementName);
ObjectPath = StrTemplate("%1/%2", Path, ObjectName);
Else
ElementPath = ElementName;
ObjectPath = ObjectName;
EndIf;
Element.Insert("path", ElementPath);
Object.Insert("path", ObjectPath);
If Recursively Then
If Element["is_directory"] Then
If Object["is_directory"] Then
ResultSubdirectory = ListObjects(Connection, ElementPath, True);
ResultSubdirectory = ListObjects(Connection, ObjectPath, True);
If Not ResultSubdirectory["result"] Then
Result = ResultSubdirectory;
Break;
Else
Element.Insert("elements", ResultSubdirectory["data"]);
Object.Insert("objects", ResultSubdirectory["data"]);
EndIf;
EndIf;
@@ -351,7 +383,7 @@ Function ListObjects(Val Connection, Val Path = "", Val Recursively = False) Exp
Result = New Map;
Result.Insert("result", True);
Result.Insert("data" , ElementList);
Result.Insert("data" , ObjectList);
EndIf;
@@ -655,20 +687,20 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent
Primary = False;
EndIf;
NestedItems = ListObjects(Connection, Path, True);
NeedParts = ListObjects(Connection, Path, True);
If NestedItems["result"] Then
For Each Element In NestedItems["data"] Do
If NeedParts["result"] Then
For Each Object In NeedParts["data"] Do
ElementPath = Element["path"];
ObjectPath = Object["path"];
If Element["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeleteCurrent, DeletedArray);
If Object["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ObjectPath, DeleteCurrent, DeletedArray);
Else
Deletion = DeleteFile(Connection, ElementPath);
Deletion = DeleteFile(Connection, ObjectPath);
EndIf;
Deletion.Insert("path", ElementPath);
Deletion.Insert("path", ObjectPath);
DeletedArray.Add(Deletion);
EndDo;
@@ -683,7 +715,7 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent
EndIf;
If Primary Then
Result.Insert("deleted_elements", DeletedArray);
Result.Insert("deleted_objects", DeletedArray);
EndIf;
Return Result;

View File

@@ -2880,6 +2880,7 @@ Procedure FT_CommonMethods() Export
FTP_GetConnectionSettings(TestParameters);
FTP_GetProxySettings(TestParameters);
FTP_GetTlsSettings(TestParameters);
FTP_GetObjectSize(TestParameters);
EndDo;
@@ -25184,7 +25185,7 @@ Procedure FTP_CreateDirectory(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Check, "CreateDirectory (check 2)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"] , 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["elements"], 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["objects"], 1);
EndProcedure
@@ -25307,6 +25308,7 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (bd)" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (file size)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_ResultTrue(Result2);
@@ -25314,6 +25316,15 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/pic_from_disk.png");
Result2 = OPI_FTP.GetObjectSize(Connection, "pic_from_binary.png");
OPI_TestDataRetrieval.WriteLog(Result, "UploadFile (size 1)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.WriteLog(Result2, "UploadFile (size 2)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"] , ImageDD.Size());
For N = 1 To 7 Do
Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png");
@@ -25525,6 +25536,63 @@ Procedure FTP_ClearDirectory(FunctionParameters)
EndProcedure
Procedure FTP_GetObjectSize(FunctionParameters)
Host = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/big.bin");
Else
Result = Connection; // Error of connection
EndIf;
// END
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLog(Result, "GetObjectSize" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/another.bin");
OPI_TestDataRetrieval.WriteLog(Result, "GetObjectSize (notexisted)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -2777,6 +2777,7 @@ Procedure CLI_FT_CommonMethods() Export
CLI_FTP_GetConnectionSettings(TestParameters);
CLI_FTP_GetProxySettings(TestParameters);
CLI_FTP_GetTlsSettings(TestParameters);
CLI_FTP_GetObjectSize(TestParameters);
EndDo;
@@ -26733,7 +26734,7 @@ Procedure CLI_FTP_CreateDirectory(FunctionParameters)
OPI_TestDataRetrieval.WriteLogCLI(Check, "CreateDirectory (check 2)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Check);
OPI_TestDataRetrieval.Check_Array(Check["data"] , 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["elements"], 1);
OPI_TestDataRetrieval.Check_Array(Check["data"][0]["objects"], 1);
EndProcedure
@@ -26986,6 +26987,7 @@ Procedure CLI_FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (bd)" + Postfix , "FTP");
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (file size)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_ResultTrue(Result2);
@@ -26993,6 +26995,22 @@ Procedure CLI_FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
Options.Insert("conn", Connection);
Options.Insert("path", "new_dir/pic_from_disk.png");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
Options.Insert("conn", Connection);
Options.Insert("path", "pic_from_binary.png");
Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "UploadFile (size 1)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.WriteLogCLI(Result2, "UploadFile (size 2)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"] , ImageDD.Size());
For N = 1 To 20 Do
Options = New Structure;
@@ -27146,6 +27164,86 @@ Procedure CLI_FTP_DeleteFile(FunctionParameters)
EndProcedure
Procedure CLI_FTP_GetObjectSize(FunctionParameters)
Domain = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
Options = New Structure;
Options.Insert("host" , Domain);
Options.Insert("port" , Port);
Options.Insert("login", Login);
Options.Insert("pass" , Password);
FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
Options = New Structure;
Options.Insert("addr" , ProxyAddress);
Options.Insert("port" , ProxyPort);
Options.Insert("type" , ProxyType);
Options.Insert("login", ProxyLogin);
Options.Insert("pass" , ProxyPassword);
ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options);
EndIf;
If FTPS Then
Options = New Structure;
Options.Insert("trust", True);
TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTlsSettings", Options);
EndIf;
Options = New Structure;
Options.Insert("set", FTPSettings);
Options = New Structure;
Options.Insert("set" , FTPSettings);
Options.Insert("proxy", ProxySettings);
Options.Insert("tls" , TLSSettings);
Connection = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionConfiguration", Options);
Options.Insert("conn", Connection);
Options.Insert("path", "new_dir/big.bin");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options);
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetObjectSize" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.GetObjectSize(Connection, "new_dir/another.bin");
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetObjectSize (notexisted)" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultFalse(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -59,6 +59,27 @@ Function GetComposition() Export
NewLine.MethodDescription = "Receives the FTP servers welcome message";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetObjectSize";
NewLine.SearchMethod = "GETOBJECTSIZE";
NewLine.Parameter = "--conn";
NewLine.Description = "Existing connection or connection configuration";
NewLine.Region = "Common methods";
NewLine.MethodDescription = "Get the size of a file or directory if it exists";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetObjectSize";
NewLine.SearchMethod = "GETOBJECTSIZE";
NewLine.Parameter = "--path";
NewLine.Description = "Path to the object";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
@@ -249,7 +270,7 @@ Function GetComposition() Export
NewLine.Method = "ListObjects";
NewLine.SearchMethod = "LISTOBJECTS";
NewLine.Parameter = "--rcv";
NewLine.Description = "Get information about elements in nested directories (optional, def. val. - False)";
NewLine.Description = "Get information about objects in nested directories (optional, def. val. - False)";
NewLine.Region = "Directory management";

View File

@@ -162,6 +162,38 @@
КонецФункции
// Получить размер объекта
// Получает размер файла или директории, если она существуют
//
// Параметры:
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
// Путь - Строка - Путь к объекту - path
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ПолучитьРазмерОбъекта(Знач Соединение, Знач Путь) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
Результат = Соединение.GetObjectSize(Путь);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
// Это коннектор !NOCLI
// Проверяет, что значение является объектом внешней компоненты для работы с FTP
//
@@ -296,7 +328,7 @@
// Параметры:
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
// Путь - Строка - Путь к директории поиска - path
// Рекурсивно - Булево - Получать информацию об элементах во вложенных директориях - rcv
// Рекурсивно - Булево - Получать информацию об объектах во вложенных директориях - rcv
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
@@ -318,30 +350,30 @@
Если Результат["result"] Тогда
СписокЭлементов = Результат["data"];
СписокОбъектов = Результат["data"];
Для Каждого Элемент Из СписокЭлементов Цикл
Для Каждого Объект Из СписокОбъектов Цикл
ИмяЭлемента = Элемент["name"];
ИмяОбъекта = Объект["name"];
Если ЗначениеЗаполнено(Путь) Тогда
ПутьЭлемента = СтрШаблон("%1/%2", Путь, ИмяЭлемента);
ПутьОбъекта = СтрШаблон("%1/%2", Путь, ИмяОбъекта);
Иначе
ПутьЭлемента = ИмяЭлемента;
ПутьОбъекта = ИмяОбъекта;
КонецЕсли;
Элемент.Вставить("path", ПутьЭлемента);
Объект.Вставить("path", ПутьОбъекта);
Если Рекурсивно Тогда
Если Элемент["is_directory"] Тогда
Если Объект["is_directory"] Тогда
РезультатПодкаталога = ПолучитьСписокОбъектов(Соединение, ПутьЭлемента, Истина);
РезультатПодкаталога = ПолучитьСписокОбъектов(Соединение, ПутьОбъекта, Истина);
Если Не РезультатПодкаталога["result"] Тогда
Результат = РезультатПодкаталога;
Прервать;
Иначе
Элемент.Вставить("elements", РезультатПодкаталога["data"]);
Объект.Вставить("objects", РезультатПодкаталога["data"]);
КонецЕсли;
КонецЕсли;
@@ -351,7 +383,7 @@
Результат = Новый Соответствие;
Результат.Вставить("result", Истина);
Результат.Вставить("data" , СписокЭлементов);
Результат.Вставить("data" , СписокОбъектов);
КонецЕсли;
@@ -655,20 +687,20 @@
Основной = Ложь;
КонецЕсли;
ВложенныеЭлементы = ПолучитьСписокОбъектов(Соединение, Путь, Истина);
ВложенныеОбъекты = ПолучитьСписокОбъектов(Соединение, Путь, Истина);
Если ВложенныеЭлементы["result"] Тогда
Для Каждого Элемент Из ВложенныеЭлементы["data"] Цикл
Если ВложенныеОбъекты["result"] Тогда
Для Каждого Объект Из ВложенныеОбъекты["data"] Цикл
ПутьЭлемента = Элемент["path"];
ПутьОбъекта = Объект["path"];
Если Элемент["is_directory"] Тогда
Удаление = УдалитьДиректориюРекурсивно(Соединение, ПутьЭлемента, УдалятьТекущую, МассивУдаленных);
Если Объект["is_directory"] Тогда
Удаление = УдалитьДиректориюРекурсивно(Соединение, ПутьОбъекта, УдалятьТекущую, МассивУдаленных);
Иначе
Удаление = УдалитьФайл(Соединение, ПутьЭлемента);
Удаление = УдалитьФайл(Соединение, ПутьОбъекта);
КонецЕсли;
Удаление.Вставить("path", ПутьЭлемента);
Удаление.Вставить("path", ПутьОбъекта);
МассивУдаленных.Добавить(Удаление);
КонецЦикла;
@@ -683,7 +715,7 @@
КонецЕсли;
Если Основной Тогда
Результат.Вставить("deleted_elements", МассивУдаленных);
Результат.Вставить("deleted_objects", МассивУдаленных);
КонецЕсли;
Возврат Результат;
@@ -748,6 +780,10 @@ Function GetWelcomeMessage(Val Connection) Export
Return ПолучитьПриветственноеСообщение(Connection);
EndFunction
Function GetObjectSize(Val Connection, Val Path) Export
Return ПолучитьРазмерОбъекта(Connection, Path);
EndFunction
Function IsConnector(Val Value) Export
Return ЭтоКоннектор(Value);
EndFunction

View File

@@ -2880,6 +2880,7 @@
FTP_ПолучитьНастройкиСоединения(ПараметрыТеста);
FTP_ПолучитьНастройкиПрокси(ПараметрыТеста);
FTP_ПолучитьНастройкиTls(ПараметрыТеста);
FTP_ПолучитьРазмерОбъекта(ПараметрыТеста);
КонецЦикла;
@@ -25184,7 +25185,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "СоздатьДиректорию (проверка 2)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"] , 1);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"][0]["elements"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"][0]["objects"] , 1);
КонецПроцедуры
@@ -25307,6 +25308,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл" + Постфикс , "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл (дд)" + Постфикс , "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл (размер файла)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат2);
@@ -25314,6 +25316,15 @@
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["bytes"] , КартинкаДД.Размер());
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат2["bytes"], КартинкаДД.Размер());
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/pic_from_disk.png");
Результат2 = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "pic_from_binary.png");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл (размер 1)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["bytes"] , КартинкаДД.Размер());
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат2, "ЗагрузитьФайл (размер 2)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат2["bytes"] , КартинкаДД.Размер());
Для Н = 1 По 7 Цикл
Результат = OPI_FTP.ЗагрузитьФайл(Соединение, Картинка, "new_dir/pic_from_disk.png");
@@ -25525,6 +25536,63 @@
КонецПроцедуры
Процедура FTP_ПолучитьРазмерОбъекта(ПараметрыФункции)
Хост = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
Логин = ПараметрыФункции["FTP_User"];
Пароль = ПараметрыФункции["FTP_Password"];
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
FTPS = ПараметрыФункции["TLS"]; // SKIP
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
АдресПрокси = ПараметрыФункции["Proxy_IP"];
ПортПрокси = ПараметрыФункции["Proxy_Port"];
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/big.bin");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
// END
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьРазмерОбъекта" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/another.bin");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьРазмерОбъекта (несуществующий)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -2777,6 +2777,7 @@
CLI_FTP_ПолучитьНастройкиСоединения(ПараметрыТеста);
CLI_FTP_ПолучитьНастройкиПрокси(ПараметрыТеста);
CLI_FTP_ПолучитьНастройкиTls(ПараметрыТеста);
CLI_FTP_ПолучитьРазмерОбъекта(ПараметрыТеста);
КонецЦикла;
@@ -26733,7 +26734,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Проверка, "СоздатьДиректорию (проверка 2)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"] , 1);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"][0]["elements"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"][0]["objects"] , 1);
КонецПроцедуры
@@ -26986,6 +26987,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл" + Постфикс , "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (дд)" + Постфикс , "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (размер файла)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат2);
@@ -26993,6 +26995,22 @@
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["bytes"] , КартинкаДД.Размер());
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат2["bytes"], КартинкаДД.Размер());
Опции.Вставить("conn", Соединение);
Опции.Вставить("path", "new_dir/pic_from_disk.png");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции);
Опции.Вставить("conn", Соединение);
Опции.Вставить("path", "pic_from_binary.png");
Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ЗагрузитьФайл (размер 1)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["bytes"] , КартинкаДД.Размер());
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат2, "ЗагрузитьФайл (размер 2)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат2["bytes"] , КартинкаДД.Размер());
Для Н = 1 По 20 Цикл
Опции = Новый Структура;
@@ -27146,6 +27164,86 @@
КонецПроцедуры
Процедура CLI_FTP_ПолучитьРазмерОбъекта(ПараметрыФункции)
Домен = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
Логин = ПараметрыФункции["FTP_User"];
Пароль = ПараметрыФункции["FTP_Password"];
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
FTPS = ПараметрыФункции["TLS"]; // SKIP
Опции = Новый Структура;
Опции.Вставить("host" , Домен);
Опции.Вставить("port" , Порт);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции);
Если ИспользоватьПрокси Тогда
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
АдресПрокси = ПараметрыФункции["Proxy_IP"];
ПортПрокси = ПараметрыФункции["Proxy_Port"];
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
Опции = Новый Структура;
Опции.Вставить("addr" , АдресПрокси);
Опции.Вставить("port" , ПортПрокси);
Опции.Вставить("type" , ТипПрокси);
Опции.Вставить("login", ЛогинПрокси);
Опции.Вставить("pass" , ПарольПрокси);
НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции);
КонецЕсли;
Если FTPS Тогда
Опции = Новый Структура;
Опции.Вставить("trust", Истина);
НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTls", Опции);
КонецЕсли;
Опции = Новый Структура;
Опции.Вставить("set", НастройкиFTP);
Опции = Новый Структура;
Опции.Вставить("set" , НастройкиFTP);
Опции.Вставить("proxy", НастройкиПрокси);
Опции.Вставить("tls" , НастройкиTLS);
Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьКонфигурациюСоединения", Опции);
Опции.Вставить("conn", Соединение);
Опции.Вставить("path", "new_dir/big.bin");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции);
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьРазмерОбъекта" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/another.bin");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьРазмерОбъекта (несуществующий)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -59,6 +59,27 @@
НоваяСтрока.ОписаниеМетода = "Получает приветственное сообщение сервера FTP";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьРазмерОбъекта";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬРАЗМЕРОБЪЕКТА";
НоваяСтрока.Параметр = "--conn";
НоваяСтрока.Описание = "Существующее соединение или конфигурация соединения";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Получает размер файла или директории, если она существуют";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьРазмерОбъекта";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬРАЗМЕРОБЪЕКТА";
НоваяСтрока.Параметр = "--path";
НоваяСтрока.Описание = "Путь к объекту";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
@@ -249,7 +270,7 @@
НоваяСтрока.Метод = "ПолучитьСписокОбъектов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКОБЪЕКТОВ";
НоваяСтрока.Параметр = "--rcv";
НоваяСтрока.Описание = "Получать информацию об элементах во вложенных директориях (необяз. по ум. - False)";
НоваяСтрока.Описание = "Получать информацию об объектах во вложенных директориях (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с директориями";