You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-16 04:03:20 +02:00
Main build (Jenkins)
This commit is contained in:
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ProxySettings = New InternetProxy;
|
||||
|
||||
ProxySettings.User = "user";
|
||||
ProxySettings.Password = "password";
|
||||
|
||||
Result = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize()
|
||||
.SetURL(URL)
|
||||
.SetProxy(ProxySettings) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnConnection();
|
||||
@@ -0,0 +1,32 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ArrayParam = New Array;
|
||||
ArrayParam.Add("val1");
|
||||
ArrayParam.Add("val2");
|
||||
ArrayParam.Add("val3");
|
||||
|
||||
ParametersStructure = New Structure("arrayfield", ArrayParam);
|
||||
|
||||
Separation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
SeparationPhp = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True, True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
NoSeparation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("param1", "search?text");
|
||||
ParametersStructure.Insert("param2", "John Doe");
|
||||
ParametersStructure.Insert("param3", "value&another");
|
||||
ParametersStructure.Insert("param4", "cyrillic");
|
||||
ParametersStructure.Insert("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
NoEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.UseURLEncoding(False) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
WithEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Set OAuth V1 algorithm and other functions to work with HTTP-client in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
description: Set OAuth V1 algorithm and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Set OAuth V1 algorithm
|
||||
# Set OAuth V1 algorithm
|
||||
Changes the algorithm for OAuth signatures
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Algorithm | --alg | String | ✔ | Encryption algorithm: HMAC, RSA |
|
||||
| HashFunction | --hash | String | ✔ | Hash function for signature: SHA1, SHA256 |
|
||||
| Algorithm | - | String | ✔ | Encryption algorithm: HMAC, RSA |
|
||||
| HashFunction | - | String | ✔ | Hash function for signature: SHA1, SHA256 |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
@@ -25,6 +25,11 @@ import TabItem from '@theme/TabItem';
|
||||
<br/>
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
|
||||
+9
-5
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
description: Add data as Related and other functions to work with HTTP-client in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
description: Add data as Related and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Add data as Related
|
||||
# Add data as Related
|
||||
Adds data to the multipart/related body
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Data | --data | Arbitrary | ✔ | Data to be written |
|
||||
| DataType | --mime | String | ✔ | MIME type of data |
|
||||
| ContentID | --cid | String | ✖ | Content ID, if required |
|
||||
| Data | - | Arbitrary | ✔ | Data to be written |
|
||||
| DataType | - | String | ✔ | MIME type of data |
|
||||
| ContentID | - | String | ✖ | Content ID, if required |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
@@ -28,6 +28,10 @@ import TabItem from '@theme/TabItem';
|
||||
:::tip
|
||||
The Multipart record must first be initialized using the `StartMultipartBody` function
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 7
|
||||
description: Get log and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
description: Set proxy and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Set proxy
|
||||
Sets the proxy settings for the connection
|
||||
|
||||
|
||||
|
||||
`Function SetProxy(Val Settings) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Settings | - | InternetProxy | ✔ | Proxy settings |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ProxySettings = New InternetProxy;
|
||||
|
||||
ProxySettings.User = "user";
|
||||
ProxySettings.Password = "password";
|
||||
|
||||
Result = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize()
|
||||
.SetURL(URL)
|
||||
.SetProxy(ProxySettings) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnConnection();
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Split arrays in URL and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Split arrays in URL
|
||||
Defines the representation of arrays in URL parameters: as a whole JSON array or separate parameters for each element
|
||||
|
||||
|
||||
|
||||
`Function SplitArraysInURL(Val Flag, Val SquareBrackets = Undefined) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Flag | --split | Boolean | ✔ | Flag for dividing the array into individual URL parameters |
|
||||
| SquareBrackets | --php | Boolean | ✖ | Add PHP style empty brackets to keys (key[]=value) if Flag = True |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
|
||||
<br/>
|
||||
|
||||
:::tip
|
||||
By default, arrays are interpreted as a single parameter with JSON array in value
|
||||
|
||||
By default, square brackets to parameter keys are not set when array splitting is performed
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ArrayParam = New Array;
|
||||
ArrayParam.Add("val1");
|
||||
ArrayParam.Add("val2");
|
||||
ArrayParam.Add("val3");
|
||||
|
||||
ParametersStructure = New Structure("arrayfield", ArrayParam);
|
||||
|
||||
Separation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
SeparationPhp = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True, True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
NoSeparation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
description: Use body fields at OAuth and other functions to work with HTTP-client in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
description: Use body fields at OAuth and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Use body fields at OAuth
|
||||
# Use body fields at OAuth
|
||||
Includes or excludes body fields when calculating the OAuth signature depending on server requirements
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Flag | --use | Boolean | ✔ | Flag to use body fields in OAuth signature calculation |
|
||||
| Flag | - | Boolean | ✔ | Flag to use body fields in OAuth signature calculation |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
@@ -26,6 +26,10 @@ import TabItem from '@theme/TabItem';
|
||||
:::tip
|
||||
By default, the body data is used in the signature calculation if it was set using the `SetFormBody` function
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
description: Use URL encoding and other functions to work with HTTP-client 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, HTTP-client]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Use URL encoding
|
||||
Enables or disables standard encoding of special characters in URLs
|
||||
|
||||
|
||||
|
||||
`Function UseURLEncoding(Val Flag) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Flag | - | Boolean | ✔ | Flag to use URL encoding |
|
||||
|
||||
|
||||
Returns: DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
|
||||
<br/>
|
||||
|
||||
:::tip
|
||||
URL encoding is enabled by default
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("param1", "search?text");
|
||||
ParametersStructure.Insert("param2", "John Doe");
|
||||
ParametersStructure.Insert("param3", "value&another");
|
||||
ParametersStructure.Insert("param4", "cyrillic");
|
||||
ParametersStructure.Insert("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
NoEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.UseURLEncoding(False) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
WithEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"URL": "https://httpbin.org"
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
СтруктураПараметров = Новый Структура;
|
||||
СтруктураПараметров.Вставить("param1", "search?text");
|
||||
СтруктураПараметров.Вставить("param2", "John Doe");
|
||||
СтруктураПараметров.Вставить("param3", "value&another");
|
||||
СтруктураПараметров.Вставить("param4", "кириллица");
|
||||
СтруктураПараметров.Вставить("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
БезКодирования = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ИспользоватьКодированиеURL(Ложь) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
@@ -0,0 +1,32 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ПараметрМассив = Новый Массив;
|
||||
ПараметрМассив.Добавить("val1");
|
||||
ПараметрМассив.Добавить("val2");
|
||||
ПараметрМассив.Добавить("val3");
|
||||
|
||||
СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив);
|
||||
|
||||
Разделение = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.РазделятьМассивыВURL(Истина) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.РазделятьМассивыВURL(Истина, Истина) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
@@ -0,0 +1,14 @@
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
НастройкиПрокси = Новый ИнтернетПрокси;
|
||||
|
||||
НастройкиПрокси.Пользователь = "user";
|
||||
НастройкиПрокси.Пароль = "password";
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать()
|
||||
.УстановитьURL(URL)
|
||||
.УстановитьПрокси(НастройкиПрокси) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьСоединение();
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Установить алгоритм OAuth V1 и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
description: Установить алгоритм OAuth V1 и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Установить алгоритм OAuth V1
|
||||
# Установить алгоритм OAuth V1
|
||||
Изменяет алгоритм для подписи OAuth
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Алгоритм | --alg | Строка | ✔ | Алгоритм шифрования: HMAC, RSA |
|
||||
| ХешФункция | --hash | Строка | ✔ | Хеш функция для сигнатуры: SHA1, SHA256 |
|
||||
| Алгоритм | - | Строка | ✔ | Алгоритм шифрования: HMAC, RSA |
|
||||
| ХешФункция | - | Строка | ✔ | Хеш функция для сигнатуры: SHA1, SHA256 |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
@@ -25,6 +25,11 @@ import TabItem from '@theme/TabItem';
|
||||
<br/>
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
|
||||
+9
-5
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
description: Добавить данные Related и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
description: Добавить данные Related и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Добавить данные Related
|
||||
# Добавить данные Related
|
||||
Добавляет данные в multipart/related тело
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Данные | --data | Произвольный | ✔ | Данные для записи |
|
||||
| ТипДанных | --mime | Строка | ✔ | MIME тип записываемых данных |
|
||||
| IDЧасти | --cid | Строка | ✖ | Content ID, если необходим |
|
||||
| Данные | - | Произвольный | ✔ | Данные для записи |
|
||||
| ТипДанных | - | Строка | ✔ | MIME тип записываемых данных |
|
||||
| IDЧасти | - | Строка | ✖ | Content ID, если необходим |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
@@ -28,6 +28,10 @@ import TabItem from '@theme/TabItem';
|
||||
:::tip
|
||||
Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart`
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 7
|
||||
description: Получить лог и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
description: Установить прокси и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Установить прокси
|
||||
Устанавливает настройки прокси для соединения
|
||||
|
||||
|
||||
|
||||
`Функция УстановитьПрокси(Знач Настройки) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Настройки | - | ИнтернетПрокси | ✔ | Настройки прокси |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
НастройкиПрокси = Новый ИнтернетПрокси;
|
||||
|
||||
НастройкиПрокси.Пользователь = "user";
|
||||
НастройкиПрокси.Пароль = "password";
|
||||
|
||||
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать()
|
||||
.УстановитьURL(URL)
|
||||
.УстановитьПрокси(НастройкиПрокси) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьСоединение();
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Разделять массивы в URL и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Разделять массивы в URL
|
||||
Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента
|
||||
|
||||
|
||||
|
||||
`Функция РазделятьМассивыВURL(Знач Флаг, Знач КвадратныеСкобки = Неопределено) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Флаг | - | Булево | ✔ | Признак деления массива на отдельные параметры URL |
|
||||
| КвадратныеСкобки | - | Булево | ✖ | Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
|
||||
<br/>
|
||||
|
||||
:::tip
|
||||
По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении
|
||||
|
||||
По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
ПараметрМассив = Новый Массив;
|
||||
ПараметрМассив.Добавить("val1");
|
||||
ПараметрМассив.Добавить("val2");
|
||||
ПараметрМассив.Добавить("val3");
|
||||
|
||||
СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив);
|
||||
|
||||
Разделение = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.РазделятьМассивыВURL(Истина) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.РазделятьМассивыВURL(Истина, Истина) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
description: Использовать поля тела в OAuth и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
description: Использовать поля тела в OAuth и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Использовать поля тела в OAuth
|
||||
# Использовать поля тела в OAuth
|
||||
Включает или исключает поля тела при расчете подписи OAuth в зависимости от требований сервера
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Флаг | --use | Булево | ✔ | Признак использования полей тела в расчете подписи OAuth |
|
||||
| Флаг | - | Булево | ✔ | Признак использования полей тела в расчете подписи OAuth |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
@@ -26,6 +26,10 @@ import TabItem from '@theme/TabItem';
|
||||
:::tip
|
||||
По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело`
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
description: Использовать кодирование URL и другие функции для работы с HTTP-клиент в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, HTTP-клиент]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Использовать кодирование URL
|
||||
Включает или отключает стандартное кодирование спец. символов в URL
|
||||
|
||||
|
||||
|
||||
`Функция ИспользоватьКодированиеURL(Знач Флаг) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Флаг | - | Булево | ✔ | Признак использования кодирования URL |
|
||||
|
||||
|
||||
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
|
||||
<br/>
|
||||
|
||||
:::tip
|
||||
По умолчанию кодирование URL включено
|
||||
:::
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
URL = "https://httpbin.org";
|
||||
URL = URL + "/get";
|
||||
|
||||
СтруктураПараметров = Новый Структура;
|
||||
СтруктураПараметров.Вставить("param1", "search?text");
|
||||
СтруктураПараметров.Вставить("param2", "John Doe");
|
||||
СтруктураПараметров.Вставить("param3", "value&another");
|
||||
СтруктураПараметров.Вставить("param4", "кириллица");
|
||||
СтруктураПараметров.Вставить("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
БезКодирования = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ИспользоватьКодированиеURL(Ложь) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
+7623
-7623
File diff suppressed because it is too large
Load Diff
+126
@@ -2641,6 +2641,7 @@ Procedure HTTP_Initialization() Export
|
||||
HTTPClient_SetResponseFile(TestParameters);
|
||||
HTTPClient_SetDataType(TestParameters);
|
||||
HTTPClient_GetLog(TestParameters);
|
||||
HTTPClient_SetProxy(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -2670,6 +2671,8 @@ Procedure HTTP_Settings() Export
|
||||
HTTPClient_UseEncoding(TestParameters);
|
||||
HTTPClient_UseGzipCompression(TestParameters);
|
||||
HTTPClient_UseBodyFiledsAtOAuth(TestParameters);
|
||||
HTTPClient_UseURLEncoding(TestParameters);
|
||||
HTTPClient_SplitArraysInURL(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -22601,6 +22604,129 @@ Procedure HTTPClient_ReturnResponseFilename(FunctionParameters)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_SetProxy(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ProxySettings = New InternetProxy;
|
||||
|
||||
ProxySettings.User = "user";
|
||||
ProxySettings.Password = "password";
|
||||
|
||||
Result = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize()
|
||||
.SetURL(URL)
|
||||
.SetProxy(ProxySettings) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnConnection();
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "SetProxy", "HTTPClient");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("HTTPConnection");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result.Proxy.User).Равно("user");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result.Proxy.Password).Равно("password");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_UseURLEncoding(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("param1", "search?text");
|
||||
ParametersStructure.Insert("param2", "John Doe");
|
||||
ParametersStructure.Insert("param3", "value&another");
|
||||
ParametersStructure.Insert("param4", "cyrillic");
|
||||
ParametersStructure.Insert("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
NoEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.UseURLEncoding(False) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
WithEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
// END
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("No encoding" , NoEncoding);
|
||||
Result.Insert("With encoding" , WithEncoding);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "UseURLEncoding", "HTTPClient");
|
||||
|
||||
CorrectVariant1 = "/page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=кириллица¶m5=<script>alert('XSS')</script>";
|
||||
OPI_TestDataRetrieval.ExpectsThat(NoEncoding).Равно(CorrectVariant1);
|
||||
|
||||
CorrectVariant2 = "/page?param1=search%3Ftext¶m2=John%20Doe¶m3=value%26another¶m4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0¶m5=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E";
|
||||
OPI_TestDataRetrieval.ExpectsThat(WithEncoding).Равно(CorrectVariant2);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_SplitArraysInURL(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ArrayParam = New Array;
|
||||
ArrayParam.Add("val1");
|
||||
ArrayParam.Add("val2");
|
||||
ArrayParam.Add("val3");
|
||||
|
||||
ParametersStructure = New Structure("arrayfield", ArrayParam);
|
||||
|
||||
Separation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
SeparationPhp = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True, True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
NoSeparation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
// END
|
||||
|
||||
Result = StrTemplate("No separation: %1;
|
||||
|Separation: %2
|
||||
|Separation (php): %3", NoSeparation, Separation, SeparationPhp);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "SplitArraysInURL", "HTTPClient");
|
||||
|
||||
CorrectVariant1 = "/page?arrayfield=val1&arrayfield=val2&arrayfield=val3";
|
||||
OPI_TestDataRetrieval.ExpectsThat(Separation).Равно(CorrectVariant1);
|
||||
|
||||
CorrectVariant2 = "/page?arrayfield=%5Bval1%2Cval2%2Cval3%5D";
|
||||
OPI_TestDataRetrieval.ExpectsThat(NoSeparation).Равно(CorrectVariant2);
|
||||
|
||||
CorrectVariant3 = "/page?arrayfield[]=val1&arrayfield[]=val2&arrayfield[]=val3";
|
||||
OPI_TestDataRetrieval.ExpectsThat(SeparationPhp).Равно(CorrectVariant3);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
+122
-19
@@ -214,7 +214,7 @@ Function SetURLParams(Val Value) Export
|
||||
ErrorText = "SetURLParams: the passed parameters are not a key/value collection";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Value, ErrorText);
|
||||
|
||||
RequestURLParams = Value;
|
||||
RequestURLParams = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
Return ЭтотОбъект;
|
||||
|
||||
@@ -288,6 +288,37 @@ Function SetDataType(Val Value) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Set proxy !NOCLI
|
||||
// Sets the proxy settings for the connection
|
||||
//
|
||||
// Parameters:
|
||||
// Settings - InternetProxy - Proxy settings - proxy
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function SetProxy(Val Settings) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ЭтотОбъект; EndIf;
|
||||
|
||||
If TypeOf(Settings) = Type("InternetProxy") Then
|
||||
|
||||
AddLog("SetProxy: setting the value");
|
||||
RequestProxy = Settings;
|
||||
|
||||
Else
|
||||
Error("SetProxy: passed settings are not an object of the InternetProxy type");
|
||||
EndIf;
|
||||
|
||||
Return ЭтотОбъект;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Gets the execution log
|
||||
//
|
||||
@@ -372,7 +403,7 @@ Function UseGzipCompression(Val Flag) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Use body fields at OAuth
|
||||
// Use body fields at OAuth !NOCLI
|
||||
// Includes or excludes body fields when calculating the OAuth signature depending on server requirements
|
||||
//
|
||||
// Note
|
||||
@@ -402,6 +433,77 @@ Function UseBodyFiledsAtOAuth(Val Flag) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Use URL encoding !NOCLI
|
||||
// Enables or disables standard encoding of special characters in URLs
|
||||
//
|
||||
// Note
|
||||
// URL encoding is enabled by default
|
||||
//
|
||||
// Parameters:
|
||||
// Flag - Boolean - Flag to use URL encoding - enc
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function UseURLEncoding(Val Flag) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ЭтотОбъект; EndIf;
|
||||
|
||||
AddLog("UseURLEncoding: setting the value");
|
||||
OPI_TypeConversion.GetBoolean(Flag);
|
||||
|
||||
SetSetting("URLencoding", Flag);
|
||||
|
||||
Return ЭтотОбъект;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Split arrays in URL
|
||||
// Defines the representation of arrays in URL parameters: as a whole JSON array or separate parameters for each element
|
||||
//
|
||||
// Note
|
||||
// By default, arrays are interpreted as a single parameter with JSON array in value
|
||||
// By default, square brackets to parameter keys are not set when array splitting is performed
|
||||
//
|
||||
// Parameters:
|
||||
// Flag - Boolean - Flag for dividing the array into individual URL parameters - split
|
||||
// SquareBrackets - Boolean - Add PHP style empty brackets to keys (key[]=value) if Flag = True - php
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function SplitArraysInURL(Val Flag, Val SquareBrackets = Undefined) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ЭтотОбъект; EndIf;
|
||||
|
||||
AddLog("SplitArraysInURL: setting the value");
|
||||
OPI_TypeConversion.GetBoolean(Flag);
|
||||
|
||||
If SquareBrackets <> Undefined Then
|
||||
|
||||
AddLog("SplitArraysInURL: square brackets option setting");
|
||||
OPI_TypeConversion.GetBoolean(SquareBrackets);
|
||||
|
||||
SetSetting("ArraysSquareBrackets", SquareBrackets);
|
||||
|
||||
EndIf;
|
||||
|
||||
SetSetting("SplitArrayParams", Flag);
|
||||
|
||||
Return ЭтотОбъект;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region BodySet
|
||||
@@ -529,7 +631,7 @@ Function SetJsonBody(Val Data) Export
|
||||
OPI_TypeConversion.GetCollection(Data);
|
||||
|
||||
If Not TypeOf(Data) = Type("Array") Then
|
||||
RequestBodyCollection = Data;
|
||||
RequestBodyCollection = OPI_Tools.CopyCollection(Data);
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
@@ -585,7 +687,7 @@ Function SetFormBody(Val Data) Export
|
||||
|
||||
Else
|
||||
|
||||
RequestBodyCollection = Data;
|
||||
RequestBodyCollection = OPI_Tools.CopyCollection(Data);
|
||||
Data = RequestParametersToString(Data);
|
||||
|
||||
EndIf;
|
||||
@@ -784,7 +886,7 @@ Function AddMultipartFormDataField(Val FieldName, Val Value) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Add data as Related
|
||||
// Add data as Related !NOCLI
|
||||
// Adds data to the multipart/related body
|
||||
//
|
||||
// Note
|
||||
@@ -1040,7 +1142,7 @@ Function AddOAuthV1Authorization(Val Token, Val Secret, Val ConsumerKey, Val Con
|
||||
|
||||
EndFunction
|
||||
|
||||
// Set OAuth V1 algorithm
|
||||
// Set OAuth V1 algorithm !NOCLI
|
||||
// Changes the algorithm for OAuth signatures
|
||||
//
|
||||
// Parameters:
|
||||
@@ -1351,20 +1453,19 @@ Function ConvertParameterToString(Val Value)
|
||||
|
||||
If TypeOf(Value) = Type("Array") Then
|
||||
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
For N = 0 To Value.UBound() Do
|
||||
Value[N] = ConvertParameterToString(Value[N]);
|
||||
EndDo;
|
||||
|
||||
Value = StrConcat(Value, ",");
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLInURLEncoding);
|
||||
EndIf;
|
||||
|
||||
Value = "[" + Value + "]";
|
||||
|
||||
ElsIf TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure") Then
|
||||
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
JSONParameters = New JSONWriterSettings(JSONLineBreak.None, "");
|
||||
|
||||
JSONWriter = New JSONWriter;
|
||||
@@ -1381,10 +1482,10 @@ Function ConvertParameterToString(Val Value)
|
||||
|
||||
OPI_TypeConversion.GetLine(Value);
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLencoding);
|
||||
EndIf;
|
||||
EndIf;
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLencoding);
|
||||
EndIf;
|
||||
|
||||
Return Value;
|
||||
@@ -1612,7 +1713,8 @@ EndFunction
|
||||
|
||||
Function SplitArrayAsURLParameters(Val Key, Val Value)
|
||||
|
||||
KeyArray = Key + "=";
|
||||
KeyArray = StrTemplate("%1%2=", Key, ?(GetSetting("ArraysSquareBrackets"), "[]", ""));
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
For N = 0 To Value.UBound() Do
|
||||
|
||||
@@ -2665,11 +2767,12 @@ Procedure SetDefaultSettings()
|
||||
AddLog("SetDefaultSettings: configuration setting");
|
||||
|
||||
Settings = New Structure;
|
||||
Settings.Insert("gzip" , True);
|
||||
Settings.Insert("SplitArrayParams" , False);
|
||||
Settings.Insert("URLencoding" , True);
|
||||
Settings.Insert("EncodeRequestBody" , "UTF-8");
|
||||
Settings.Insert("BodyFieldsAtOAuth" , False);
|
||||
Settings.Insert("gzip" , True);
|
||||
Settings.Insert("SplitArrayParams" , False);
|
||||
Settings.Insert("ArraysSquareBrackets" , False);
|
||||
Settings.Insert("URLencoding" , True);
|
||||
Settings.Insert("EncodeRequestBody" , "UTF-8");
|
||||
Settings.Insert("BodyFieldsAtOAuth" , False);
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+126
@@ -2641,6 +2641,7 @@ Procedure HTTP_Initialization() Export
|
||||
HTTPClient_SetResponseFile(TestParameters);
|
||||
HTTPClient_SetDataType(TestParameters);
|
||||
HTTPClient_GetLog(TestParameters);
|
||||
HTTPClient_SetProxy(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -2670,6 +2671,8 @@ Procedure HTTP_Settings() Export
|
||||
HTTPClient_UseEncoding(TestParameters);
|
||||
HTTPClient_UseGzipCompression(TestParameters);
|
||||
HTTPClient_UseBodyFiledsAtOAuth(TestParameters);
|
||||
HTTPClient_UseURLEncoding(TestParameters);
|
||||
HTTPClient_SplitArraysInURL(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -22601,6 +22604,129 @@ Procedure HTTPClient_ReturnResponseFilename(FunctionParameters)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_SetProxy(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ProxySettings = New InternetProxy;
|
||||
|
||||
ProxySettings.User = "user";
|
||||
ProxySettings.Password = "password";
|
||||
|
||||
Result = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize()
|
||||
.SetURL(URL)
|
||||
.SetProxy(ProxySettings) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnConnection();
|
||||
|
||||
// END
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "SetProxy", "HTTPClient");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("HTTPConnection");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result.Proxy.User).Равно("user");
|
||||
OPI_TestDataRetrieval.ExpectsThat(Result.Proxy.Password).Равно("password");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_UseURLEncoding(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("param1", "search?text");
|
||||
ParametersStructure.Insert("param2", "John Doe");
|
||||
ParametersStructure.Insert("param3", "value&another");
|
||||
ParametersStructure.Insert("param4", "cyrillic");
|
||||
ParametersStructure.Insert("param5", "<script>alert('XSS')</script>");
|
||||
|
||||
NoEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.UseURLEncoding(False) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
WithEncoding = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
// END
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("No encoding" , NoEncoding);
|
||||
Result.Insert("With encoding" , WithEncoding);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "UseURLEncoding", "HTTPClient");
|
||||
|
||||
CorrectVariant1 = "/page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=кириллица¶m5=<script>alert('XSS')</script>";
|
||||
OPI_TestDataRetrieval.ExpectsThat(NoEncoding).Равно(CorrectVariant1);
|
||||
|
||||
CorrectVariant2 = "/page?param1=search%3Ftext¶m2=John%20Doe¶m3=value%26another¶m4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0¶m5=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E";
|
||||
OPI_TestDataRetrieval.ExpectsThat(WithEncoding).Равно(CorrectVariant2);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure HTTPClient_SplitArraysInURL(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
ArrayParam = New Array;
|
||||
ArrayParam.Add("val1");
|
||||
ArrayParam.Add("val2");
|
||||
ArrayParam.Add("val3");
|
||||
|
||||
ParametersStructure = New Structure("arrayfield", ArrayParam);
|
||||
|
||||
Separation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
SeparationPhp = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.SplitArraysInURL(True, True) // <---
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
NoSeparation = OPI_HTTPRequests.NewRequest()
|
||||
.Initialize("https://example.com/page")
|
||||
.SetURLParams(ParametersStructure)
|
||||
.ProcessRequest("GET", False)
|
||||
.ReturnRequest()
|
||||
.ResourceAddress;
|
||||
|
||||
// END
|
||||
|
||||
Result = StrTemplate("No separation: %1;
|
||||
|Separation: %2
|
||||
|Separation (php): %3", NoSeparation, Separation, SeparationPhp);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "SplitArraysInURL", "HTTPClient");
|
||||
|
||||
CorrectVariant1 = "/page?arrayfield=val1&arrayfield=val2&arrayfield=val3";
|
||||
OPI_TestDataRetrieval.ExpectsThat(Separation).Равно(CorrectVariant1);
|
||||
|
||||
CorrectVariant2 = "/page?arrayfield=%5Bval1%2Cval2%2Cval3%5D";
|
||||
OPI_TestDataRetrieval.ExpectsThat(NoSeparation).Равно(CorrectVariant2);
|
||||
|
||||
CorrectVariant3 = "/page?arrayfield[]=val1&arrayfield[]=val2&arrayfield[]=val3";
|
||||
OPI_TestDataRetrieval.ExpectsThat(SeparationPhp).Равно(CorrectVariant3);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
+122
-19
@@ -214,7 +214,7 @@ Function SetURLParams(Val Value) Export
|
||||
ErrorText = "SetURLParams: the passed parameters are not a key/value collection";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Value, ErrorText);
|
||||
|
||||
RequestURLParams = Value;
|
||||
RequestURLParams = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
Return ThisObject;
|
||||
|
||||
@@ -288,6 +288,37 @@ Function SetDataType(Val Value) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Set proxy !NOCLI
|
||||
// Sets the proxy settings for the connection
|
||||
//
|
||||
// Parameters:
|
||||
// Settings - InternetProxy - Proxy settings - proxy
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function SetProxy(Val Settings) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ThisObject; EndIf;
|
||||
|
||||
If TypeOf(Settings) = Type("InternetProxy") Then
|
||||
|
||||
AddLog("SetProxy: setting the value");
|
||||
RequestProxy = Settings;
|
||||
|
||||
Else
|
||||
Error("SetProxy: passed settings are not an object of the InternetProxy type");
|
||||
EndIf;
|
||||
|
||||
Return ThisObject;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Gets the execution log
|
||||
//
|
||||
@@ -372,7 +403,7 @@ Function UseGzipCompression(Val Flag) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Use body fields at OAuth
|
||||
// Use body fields at OAuth !NOCLI
|
||||
// Includes or excludes body fields when calculating the OAuth signature depending on server requirements
|
||||
//
|
||||
// Note
|
||||
@@ -402,6 +433,77 @@ Function UseBodyFiledsAtOAuth(Val Flag) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Use URL encoding !NOCLI
|
||||
// Enables or disables standard encoding of special characters in URLs
|
||||
//
|
||||
// Note
|
||||
// URL encoding is enabled by default
|
||||
//
|
||||
// Parameters:
|
||||
// Flag - Boolean - Flag to use URL encoding - enc
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function UseURLEncoding(Val Flag) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ThisObject; EndIf;
|
||||
|
||||
AddLog("UseURLEncoding: setting the value");
|
||||
OPI_TypeConversion.GetBoolean(Flag);
|
||||
|
||||
SetSetting("URLencoding", Flag);
|
||||
|
||||
Return ThisObject;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Split arrays in URL
|
||||
// Defines the representation of arrays in URL parameters: as a whole JSON array or separate parameters for each element
|
||||
//
|
||||
// Note
|
||||
// By default, arrays are interpreted as a single parameter with JSON array in value
|
||||
// By default, square brackets to parameter keys are not set when array splitting is performed
|
||||
//
|
||||
// Parameters:
|
||||
// Flag - Boolean - Flag for dividing the array into individual URL parameters - split
|
||||
// SquareBrackets - Boolean - Add PHP style empty brackets to keys (key[]=value) if Flag = True - php
|
||||
//
|
||||
// Returns:
|
||||
// DataProcessorObject.OPI_HTTPClient - This processor object
|
||||
Function SplitArraysInURL(Val Flag, Val SquareBrackets = Undefined) Export
|
||||
|
||||
Try
|
||||
|
||||
If StopExecution() Then Return ThisObject; EndIf;
|
||||
|
||||
AddLog("SplitArraysInURL: setting the value");
|
||||
OPI_TypeConversion.GetBoolean(Flag);
|
||||
|
||||
If SquareBrackets <> Undefined Then
|
||||
|
||||
AddLog("SplitArraysInURL: square brackets option setting");
|
||||
OPI_TypeConversion.GetBoolean(SquareBrackets);
|
||||
|
||||
SetSetting("ArraysSquareBrackets", SquareBrackets);
|
||||
|
||||
EndIf;
|
||||
|
||||
SetSetting("SplitArrayParams", Flag);
|
||||
|
||||
Return ThisObject;
|
||||
|
||||
Except
|
||||
Return Error(DetailErrorDescription(ErrorInfo()));
|
||||
EndTry;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region BodySet
|
||||
@@ -529,7 +631,7 @@ Function SetJsonBody(Val Data) Export
|
||||
OPI_TypeConversion.GetCollection(Data);
|
||||
|
||||
If Not TypeOf(Data) = Type("Array") Then
|
||||
RequestBodyCollection = Data;
|
||||
RequestBodyCollection = OPI_Tools.CopyCollection(Data);
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
@@ -585,7 +687,7 @@ Function SetFormBody(Val Data) Export
|
||||
|
||||
Else
|
||||
|
||||
RequestBodyCollection = Data;
|
||||
RequestBodyCollection = OPI_Tools.CopyCollection(Data);
|
||||
Data = RequestParametersToString(Data);
|
||||
|
||||
EndIf;
|
||||
@@ -784,7 +886,7 @@ Function AddMultipartFormDataField(Val FieldName, Val Value) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Add data as Related
|
||||
// Add data as Related !NOCLI
|
||||
// Adds data to the multipart/related body
|
||||
//
|
||||
// Note
|
||||
@@ -1040,7 +1142,7 @@ Function AddOAuthV1Authorization(Val Token, Val Secret, Val ConsumerKey, Val Con
|
||||
|
||||
EndFunction
|
||||
|
||||
// Set OAuth V1 algorithm
|
||||
// Set OAuth V1 algorithm !NOCLI
|
||||
// Changes the algorithm for OAuth signatures
|
||||
//
|
||||
// Parameters:
|
||||
@@ -1351,20 +1453,19 @@ Function ConvertParameterToString(Val Value)
|
||||
|
||||
If TypeOf(Value) = Type("Array") Then
|
||||
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
For N = 0 To Value.UBound() Do
|
||||
Value[N] = ConvertParameterToString(Value[N]);
|
||||
EndDo;
|
||||
|
||||
Value = StrConcat(Value, ",");
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLInURLEncoding);
|
||||
EndIf;
|
||||
|
||||
Value = "[" + Value + "]";
|
||||
|
||||
ElsIf TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure") Then
|
||||
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
JSONParameters = New JSONWriterSettings(JSONLineBreak.None, "");
|
||||
|
||||
JSONWriter = New JSONWriter;
|
||||
@@ -1381,10 +1482,10 @@ Function ConvertParameterToString(Val Value)
|
||||
|
||||
OPI_TypeConversion.GetLine(Value);
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLencoding);
|
||||
EndIf;
|
||||
EndIf;
|
||||
|
||||
If EncodeURL Then
|
||||
Value = EncodeString(Value, StringEncodingMethod.URLencoding);
|
||||
EndIf;
|
||||
|
||||
Return Value;
|
||||
@@ -1612,7 +1713,8 @@ EndFunction
|
||||
|
||||
Function SplitArrayAsURLParameters(Val Key, Val Value)
|
||||
|
||||
KeyArray = Key + "=";
|
||||
KeyArray = StrTemplate("%1%2=", Key, ?(GetSetting("ArraysSquareBrackets"), "[]", ""));
|
||||
Value = OPI_Tools.CopyCollection(Value);
|
||||
|
||||
For N = 0 To Value.UBound() Do
|
||||
|
||||
@@ -2665,11 +2767,12 @@ Procedure SetDefaultSettings()
|
||||
AddLog("SetDefaultSettings: configuration setting");
|
||||
|
||||
Settings = New Structure;
|
||||
Settings.Insert("gzip" , True);
|
||||
Settings.Insert("SplitArrayParams" , False);
|
||||
Settings.Insert("URLencoding" , True);
|
||||
Settings.Insert("EncodeRequestBody" , "UTF-8");
|
||||
Settings.Insert("BodyFieldsAtOAuth" , False);
|
||||
Settings.Insert("gzip" , True);
|
||||
Settings.Insert("SplitArrayParams" , False);
|
||||
Settings.Insert("ArraysSquareBrackets" , False);
|
||||
Settings.Insert("URLencoding" , True);
|
||||
Settings.Insert("EncodeRequestBody" , "UTF-8");
|
||||
Settings.Insert("BodyFieldsAtOAuth" , False);
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+16
-16
@@ -22608,9 +22608,9 @@
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
|
||||
НастройкиПрокси = Новый ИнтернетПрокси;
|
||||
|
||||
|
||||
НастройкиПрокси.Пользователь = "user";
|
||||
НастройкиПрокси.Пароль = "password";
|
||||
|
||||
@@ -22619,7 +22619,7 @@
|
||||
.УстановитьURL(URL)
|
||||
.УстановитьПрокси(НастройкиПрокси) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьСоединение();
|
||||
.ВернутьСоединение();
|
||||
|
||||
// END
|
||||
|
||||
@@ -22627,7 +22627,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("HTTPСоединение");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Прокси.Пользователь).Равно("user");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Прокси.Пароль).Равно("password");
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_ИспользоватьКодированиеURL(ПараметрыФункции)
|
||||
@@ -22649,7 +22649,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22661,16 +22661,16 @@
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
Результат.Вставить("Без кодирования", БезКодирования);
|
||||
Результат.Вставить("С кодированием" , СКодированием);
|
||||
|
||||
Результат.Вставить("С кодированием" , СКодированием);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИспользоватьКодированиеURL", "HTTPКлиент");
|
||||
|
||||
|
||||
ПравильныйВариант1 = "/page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=кириллица¶m5=<script>alert('XSS')</script>";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезКодирования).Равно(ПравильныйВариант1);
|
||||
|
||||
ПравильныйВариант2 = "/page?param1=search%3Ftext¶m2=John%20Doe¶m3=value%26another¶m4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0¶m5=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СКодированием).Равно(ПравильныйВариант2);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_РазделятьМассивыВURL(ПараметрыФункции)
|
||||
@@ -22682,7 +22682,7 @@
|
||||
ПараметрМассив.Добавить("val1");
|
||||
ПараметрМассив.Добавить("val2");
|
||||
ПараметрМассив.Добавить("val3");
|
||||
|
||||
|
||||
СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив);
|
||||
|
||||
Разделение = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
@@ -22692,7 +22692,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22700,7 +22700,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22713,18 +22713,18 @@
|
||||
Результат = СтрШаблон("Без разделения: %1;
|
||||
|Разделение: %2
|
||||
|Разделение (php): %3", БезРазделения, Разделение, РазделениеPhp);
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "РазделятьМассивыВURL", "HTTPКлиент");
|
||||
|
||||
|
||||
ПравильныйВариант1 = "/page?arrayfield=val1&arrayfield=val2&arrayfield=val3";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Разделение).Равно(ПравильныйВариант1);
|
||||
|
||||
ПравильныйВариант2 = "/page?arrayfield=%5Bval1%2Cval2%2Cval3%5D";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезРазделения).Равно(ПравильныйВариант2);
|
||||
|
||||
|
||||
ПравильныйВариант3 = "/page?arrayfield[]=val1&arrayfield[]=val2&arrayfield[]=val3";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(РазделениеPhp).Равно(ПравильныйВариант3);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
+2
-2
@@ -2468,9 +2468,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
||||
+23
-23
@@ -290,23 +290,23 @@
|
||||
|
||||
// Установить прокси !NOCLI
|
||||
// Устанавливает настройки прокси для соединения
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - ИнтернетПрокси - Настройки прокси - proxy
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция УстановитьПрокси(Знач Настройки) Экспорт
|
||||
|
||||
|
||||
Попытка
|
||||
|
||||
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
|
||||
|
||||
|
||||
Если ТипЗнч(Настройки) = Тип("ИнтернетПрокси") Тогда
|
||||
|
||||
|
||||
ДобавитьЛог("УстановитьПрокси: установка значения");
|
||||
ЗапросПрокси = Настройки;
|
||||
|
||||
|
||||
Иначе
|
||||
Ошибка("УстановитьПрокси: переданные настройки не являются объектом типа ИнтернетПрокси");
|
||||
КонецЕсли;
|
||||
@@ -316,7 +316,7 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить лог !NOCLI
|
||||
@@ -435,13 +435,13 @@
|
||||
|
||||
// Использовать кодирование URL !NOCLI
|
||||
// Включает или отключает стандартное кодирование спец. символов в URL
|
||||
//
|
||||
//
|
||||
// Примечание:
|
||||
// По умолчанию кодирование URL включено
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Флаг - Булево - Признак использования кодирования URL - enc
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция ИспользоватьКодированиеURL(Знач Флаг) Экспорт
|
||||
@@ -460,20 +460,20 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Разделять массивы в URL !NOCLI
|
||||
// Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента
|
||||
//
|
||||
//
|
||||
// Примечание:
|
||||
// По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении
|
||||
// По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Флаг - Булево - Признак деления массива на отдельные параметры URL - split
|
||||
// КвадратныеСкобки - Булево - Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина - php
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция РазделятьМассивыВURL(Знач Флаг, Знач КвадратныеСкобки = Неопределено) Экспорт
|
||||
@@ -484,14 +484,14 @@
|
||||
|
||||
ДобавитьЛог("РазделятьМассивыВURL: установка значения");
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг);
|
||||
|
||||
|
||||
Если КвадратныеСкобки <> Неопределено Тогда
|
||||
|
||||
|
||||
ДобавитьЛог("РазделятьМассивыВURL: установка настройки использованя квадратных скобок");
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(КвадратныеСкобки);
|
||||
|
||||
|
||||
УстановитьНастройку("КвадратныеСкобкиМассивов", КвадратныеСкобки);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьНастройку("ОтдельныеЭлементыМассивов", Флаг);
|
||||
@@ -501,7 +501,7 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1454,7 +1454,7 @@
|
||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
|
||||
Для Н = 0 По Значение.ВГраница() Цикл
|
||||
Значение[Н] = ПреобразоватьПараметрВСтроку(Значение[Н]);
|
||||
КонецЦикла;
|
||||
@@ -1483,7 +1483,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если КодироватьURL Тогда
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
КонецЕсли;
|
||||
@@ -1714,8 +1714,8 @@
|
||||
Функция РазделитьМассивНаПараметрыURL(Знач Ключ, Знач Значение)
|
||||
|
||||
КлючМассив = СтрШаблон("%1%2=", Ключ, ?(ПолучитьНастройку("КвадратныеСкобкиМассивов"), "[]", ""));
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
Для Н = 0 По Значение.ВГраница() Цикл
|
||||
|
||||
ТекущееЗначение = Значение[Н];
|
||||
|
||||
@@ -727,9 +727,9 @@
|
||||
|
||||
Попытка
|
||||
|
||||
ЭтоОтладка = Неопределено;
|
||||
ЭтоОтладка = Неопределено;
|
||||
ЭтоОтладка = ПолучитьПеременнуюСреды("OINT_DEBUG");
|
||||
ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO");
|
||||
ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO");
|
||||
|
||||
Исключение
|
||||
ЭтоОтладка = "NO";
|
||||
|
||||
+16
-16
@@ -22608,9 +22608,9 @@
|
||||
|
||||
URL = ПараметрыФункции["HTTP_URL"];
|
||||
URL = URL + "/get";
|
||||
|
||||
|
||||
НастройкиПрокси = Новый ИнтернетПрокси;
|
||||
|
||||
|
||||
НастройкиПрокси.Пользователь = "user";
|
||||
НастройкиПрокси.Пароль = "password";
|
||||
|
||||
@@ -22619,7 +22619,7 @@
|
||||
.УстановитьURL(URL)
|
||||
.УстановитьПрокси(НастройкиПрокси) // <---
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьСоединение();
|
||||
.ВернутьСоединение();
|
||||
|
||||
// END
|
||||
|
||||
@@ -22627,7 +22627,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("HTTPСоединение");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Прокси.Пользователь).Равно("user");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Прокси.Пароль).Равно("password");
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_ИспользоватьКодированиеURL(ПараметрыФункции)
|
||||
@@ -22649,7 +22649,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22661,16 +22661,16 @@
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
Результат.Вставить("Без кодирования", БезКодирования);
|
||||
Результат.Вставить("С кодированием" , СКодированием);
|
||||
|
||||
Результат.Вставить("С кодированием" , СКодированием);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИспользоватьКодированиеURL", "HTTPКлиент");
|
||||
|
||||
|
||||
ПравильныйВариант1 = "/page?param1=search?text¶m2=John Doe¶m3=value&another¶m4=кириллица¶m5=<script>alert('XSS')</script>";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезКодирования).Равно(ПравильныйВариант1);
|
||||
|
||||
ПравильныйВариант2 = "/page?param1=search%3Ftext¶m2=John%20Doe¶m3=value%26another¶m4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0¶m5=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СКодированием).Равно(ПравильныйВариант2);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура HTTPКлиент_РазделятьМассивыВURL(ПараметрыФункции)
|
||||
@@ -22682,7 +22682,7 @@
|
||||
ПараметрМассив.Добавить("val1");
|
||||
ПараметрМассив.Добавить("val2");
|
||||
ПараметрМассив.Добавить("val3");
|
||||
|
||||
|
||||
СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив);
|
||||
|
||||
Разделение = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
@@ -22692,7 +22692,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22700,7 +22700,7 @@
|
||||
.ОбработатьЗапрос("GET", Ложь)
|
||||
.ВернутьЗапрос()
|
||||
.АдресРесурса;
|
||||
|
||||
|
||||
БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||
.Инициализировать("https://example.com/page")
|
||||
.УстановитьПараметрыURL(СтруктураПараметров)
|
||||
@@ -22713,18 +22713,18 @@
|
||||
Результат = СтрШаблон("Без разделения: %1;
|
||||
|Разделение: %2
|
||||
|Разделение (php): %3", БезРазделения, Разделение, РазделениеPhp);
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "РазделятьМассивыВURL", "HTTPКлиент");
|
||||
|
||||
|
||||
ПравильныйВариант1 = "/page?arrayfield=val1&arrayfield=val2&arrayfield=val3";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Разделение).Равно(ПравильныйВариант1);
|
||||
|
||||
ПравильныйВариант2 = "/page?arrayfield=%5Bval1%2Cval2%2Cval3%5D";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезРазделения).Равно(ПравильныйВариант2);
|
||||
|
||||
|
||||
ПравильныйВариант3 = "/page?arrayfield[]=val1&arrayfield[]=val2&arrayfield[]=val3";
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(РазделениеPhp).Равно(ПравильныйВариант3);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -290,23 +290,23 @@
|
||||
|
||||
// Установить прокси !NOCLI
|
||||
// Устанавливает настройки прокси для соединения
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - ИнтернетПрокси - Настройки прокси - proxy
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция УстановитьПрокси(Знач Настройки) Экспорт
|
||||
|
||||
|
||||
Попытка
|
||||
|
||||
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
|
||||
|
||||
|
||||
Если ТипЗнч(Настройки) = Тип("ИнтернетПрокси") Тогда
|
||||
|
||||
|
||||
ДобавитьЛог("УстановитьПрокси: установка значения");
|
||||
ЗапросПрокси = Настройки;
|
||||
|
||||
|
||||
Иначе
|
||||
Ошибка("УстановитьПрокси: переданные настройки не являются объектом типа ИнтернетПрокси");
|
||||
КонецЕсли;
|
||||
@@ -316,7 +316,7 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить лог !NOCLI
|
||||
@@ -435,13 +435,13 @@
|
||||
|
||||
// Использовать кодирование URL !NOCLI
|
||||
// Включает или отключает стандартное кодирование спец. символов в URL
|
||||
//
|
||||
//
|
||||
// Примечание:
|
||||
// По умолчанию кодирование URL включено
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Флаг - Булево - Признак использования кодирования URL - enc
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция ИспользоватьКодированиеURL(Знач Флаг) Экспорт
|
||||
@@ -460,20 +460,20 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Разделять массивы в URL !NOCLI
|
||||
// Определяет представление массивов в параметрах URL: как цельный JSON массив или отдельные параметры для каждого элемента
|
||||
//
|
||||
//
|
||||
// Примечание:
|
||||
// По умолчанию массивы интерпретируются как единый параметр с JSON массивом в значении
|
||||
// По умолчанию квадратные скобки к ключам параметров при разделении массива не устанавливаются
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Флаг - Булево - Признак деления массива на отдельные параметры URL - split
|
||||
// КвадратныеСкобки - Булево - Добавлять к ключам пустые скобки в стиле PHP (key[]=value), если Флаг = Истина - php
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
|
||||
Функция РазделятьМассивыВURL(Знач Флаг, Знач КвадратныеСкобки = Неопределено) Экспорт
|
||||
@@ -484,14 +484,14 @@
|
||||
|
||||
ДобавитьЛог("РазделятьМассивыВURL: установка значения");
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг);
|
||||
|
||||
|
||||
Если КвадратныеСкобки <> Неопределено Тогда
|
||||
|
||||
|
||||
ДобавитьЛог("РазделятьМассивыВURL: установка настройки использованя квадратных скобок");
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(КвадратныеСкобки);
|
||||
|
||||
|
||||
УстановитьНастройку("КвадратныеСкобкиМассивов", КвадратныеСкобки);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьНастройку("ОтдельныеЭлементыМассивов", Флаг);
|
||||
@@ -501,7 +501,7 @@
|
||||
Исключение
|
||||
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1454,7 +1454,7 @@
|
||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
|
||||
Для Н = 0 По Значение.ВГраница() Цикл
|
||||
Значение[Н] = ПреобразоватьПараметрВСтроку(Значение[Н]);
|
||||
КонецЦикла;
|
||||
@@ -1483,7 +1483,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если КодироватьURL Тогда
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
КонецЕсли;
|
||||
@@ -1714,8 +1714,8 @@
|
||||
Функция РазделитьМассивНаПараметрыURL(Знач Ключ, Знач Значение)
|
||||
|
||||
КлючМассив = СтрШаблон("%1%2=", Ключ, ?(ПолучитьНастройку("КвадратныеСкобкиМассивов"), "[]", ""));
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
Значение = OPI_Инструменты.КопироватьКоллекцию(Значение);
|
||||
|
||||
Для Н = 0 По Значение.ВГраница() Цикл
|
||||
|
||||
ТекущееЗначение = Значение[Н];
|
||||
|
||||
Reference in New Issue
Block a user