1
0
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:
Vitaly the Alpaca (bot)
2025-05-14 14:53:52 +03:00
parent d8fe83859e
commit 16cd212296
37 changed files with 8805 additions and 7769 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"URL": "https://httpbin.org"
}
+3
View File
@@ -0,0 +1,3 @@
{
"URL": "https://httpbin.org"
}
+3
View File
@@ -0,0 +1,3 @@
{
"URL": "https://httpbin.org"
}
+14
View File
@@ -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();
+32
View File
@@ -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
View File
@@ -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 | &#x2714; | Encryption algorithm: HMAC, RSA |
| HashFunction | --hash | String | &#x2714; | Hash function for signature: SHA1, SHA256 |
| Algorithm | - | String | &#x2714; | Encryption algorithm: HMAC, RSA |
| HashFunction | - | String | &#x2714; | 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
View File
@@ -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 | &#x2714; | Data to be written |
| DataType | --mime | String | &#x2714; | MIME type of data |
| ContentID | --cid | String | &#x2716; | Content ID, if required |
| Data | - | Arbitrary | &#x2714; | Data to be written |
| DataType | - | String | &#x2714; | MIME type of data |
| ContentID | - | String | &#x2716; | 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
View File
@@ -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]
---
+54
View File
@@ -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 | &#x2714; | 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();
```
+74
View File
@@ -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 | &#x2714; | Flag for dividing the array into individual URL parameters |
| SquareBrackets | --php | Boolean | &#x2716; | 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 | &#x2714; | Flag to use body fields in OAuth signature calculation |
| Flag | - | Boolean | &#x2714; | 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/>
+67
View File
@@ -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 | &#x2714; | 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 | Строка | &#x2714; | Алгоритм шифрования: HMAC, RSA |
| ХешФункция | --hash | Строка | &#x2714; | Хеш функция для сигнатуры: SHA1, SHA256 |
| Алгоритм | - | Строка | &#x2714; | Алгоритм шифрования: HMAC, RSA |
| ХешФункция | - | Строка | &#x2714; | Хеш функция для сигнатуры: SHA1, SHA256 |
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
@@ -25,6 +25,11 @@ import TabItem from '@theme/TabItem';
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
+9 -5
View File
@@ -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 | Произвольный | &#x2714; | Данные для записи |
| ТипДанных | --mime | Строка | &#x2714; | MIME тип записываемых данных |
| IDЧасти | --cid | Строка | &#x2716; | Content ID, если необходим |
| Данные | - | Произвольный | &#x2714; | Данные для записи |
| ТипДанных | - | Строка | &#x2714; | MIME тип записываемых данных |
| IDЧасти | - | Строка | &#x2716; | Content ID, если необходим |
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
@@ -28,6 +28,10 @@ import TabItem from '@theme/TabItem';
:::tip
Запись Multipart предварительно должна быть инициализирована при помощи функции `НачатьЗаписьТелаMultipart`
:::
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
+1 -1
View File
@@ -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-клиент]
---
+54
View File
@@ -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 опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Настройки | - | ИнтернетПрокси | &#x2714; | Настройки прокси |
Возвращаемое значение: ОбработкаОбъект.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", Ложь)
.ВернутьСоединение();
```
+78
View File
@@ -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 опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Флаг | - | Булево | &#x2714; | Признак деления массива на отдельные параметры URL |
| КвадратныеСкобки | - | Булево | &#x2716; | Добавлять к ключам пустые скобки в стиле 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 | Булево | &#x2714; | Признак использования полей тела в расчете подписи OAuth |
| Флаг | - | Булево | &#x2714; | Признак использования полей тела в расчете подписи OAuth |
Возвращаемое значение: ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
@@ -26,6 +26,10 @@ import TabItem from '@theme/TabItem';
:::tip
По умолчанию данные тела используются при расчете подписи, если оно было установлено при помощи функции `УстановитьFormТело`
:::
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
+67
View File
@@ -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 опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Флаг | - | Булево | &#x2714; | Признак использования кодирования 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", Ложь)
.ВернутьЗапрос()
.АдресРесурса;
```
+7623 -7623
View File
File diff suppressed because it is too large Load Diff
+126
View File
@@ -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&param2=John Doe&param3=value&another&param4=кириллица&param5=<script>alert('XSS')</script>";
OPI_TestDataRetrieval.ExpectsThat(NoEncoding).Равно(CorrectVariant1);
CorrectVariant2 = "/page?param1=search%3Ftext&param2=John%20Doe&param3=value%26another&param4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0&param5=%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
View File
@@ -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
View File
@@ -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&param2=John Doe&param3=value&another&param4=кириллица&param5=<script>alert('XSS')</script>";
OPI_TestDataRetrieval.ExpectsThat(NoEncoding).Равно(CorrectVariant1);
CorrectVariant2 = "/page?param1=search%3Ftext&param2=John%20Doe&param3=value%26another&param4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0&param5=%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
View File
@@ -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
View File
@@ -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&param2=John Doe&param3=value&another&param4=кириллица&param5=<script>alert('XSS')</script>";
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезКодирования).Равно(ПравильныйВариант1);
ПравильныйВариант2 = "/page?param1=search%3Ftext&param2=John%20Doe&param3=value%26another&param4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0&param5=%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);
КонецПроцедуры
#КонецОбласти
@@ -2468,9 +2468,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции
@@ -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
View File
@@ -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&param2=John Doe&param3=value&another&param4=кириллица&param5=<script>alert('XSS')</script>";
OPI_ПолучениеДанныхТестов.ОжидаетЧто(БезКодирования).Равно(ПравильныйВариант1);
ПравильныйВариант2 = "/page?param1=search%3Ftext&param2=John%20Doe&param3=value%26another&param4=%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0&param5=%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 По Значение.ВГраница() Цикл
ТекущееЗначение = Значение[Н];