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

Тесты HTTP, переработка соединений компоненты MySQL

This commit is contained in:
Anton Titovets
2025-04-21 19:37:13 +03:00
parent a363d0b158
commit acab8c3adc
32 changed files with 7821 additions and 7558 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -10,3 +10,17 @@ sidebar_class_name: Ollama
This section is dedicated to the library for working with Ollama API. On this page, all the steps necessary to start working are described
## Getting started
1. Download Ollama from [official website](https://ollama.com/) and run it on the target machine
![BF](../../static/img/Docs/Ollama/1.png)
2. `(optional)` To be able to send your models to the Ollama servers, you are also required to create an account and add a public key to the local solution by following the instructions in the [Ollama keys](https://ollama.com/settings/keys) section
![BF](../../static/img/Docs/Ollama/2.png)
3. `(optional)` To add authorization and the ability to handle requests from outside, you must configure proxying through a third-party web server
> By default, the Ollama server is only available on the local network at `localhost:11434`

View File

@@ -7,6 +7,19 @@ sidebar_class_name: Ollama
# Ollama
Этот раздел посвящен библиотеке для работы с Ollama. На данной странице описаны все действия, необходимые для полноценного начала работы
Этот раздел посвящен библиотеке для работы с протоколом Ollama. На данной странице описаны все действия, необходимые для полноценного начала работы
## Начало работы
1. Скачайте Ollama c [официального сайта](https://ollama.com/) и запустите на целевой машине
![BF](../../static/img/Docs/Ollama/1.png)
2. `(опционально)` Для получения возможности отправки своих моделей на сервера Ollama, требуется также создать аккаунт и добавить открытый ключ в локальное решение, следуя инструкциям из раздела [Ollama keys](https://ollama.com/settings/keys)
![BF](../../static/img/Docs/Ollama/2.png)
3. `(опционально)` Для добавления авторизации и возможности обработки запросов извне, необходимо настроить проксирование через сторонний веб-сервер
> По умолчанию сервер Ollama доступен только в локальной сети на `localhost:11434`

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffc9b96a000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f2c7d302000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f2c7cbed000)
libm.so.6 => /lib64/libm.so.6 (0x00007f2c7c86b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2c7c64b000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2c7c274000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2c7c070000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2c7d812000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2c7be58000)
linux-vdso.so.1 (0x00007ffca4501000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f61dd712000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f61dcffd000)
libm.so.6 => /lib64/libm.so.6 (0x00007f61dcc7b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f61dca5b000)
libc.so.6 => /lib64/libc.so.6 (0x00007f61dc684000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f61dc480000)
/lib64/ld-linux-x86-64.so.2 (0x00007f61ddc22000)
libz.so.1 => /lib64/libz.so.1 (0x00007f61dc268000)
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.4

View File

@@ -1,23 +1,19 @@
use serde_json::{Value, json};
use crate::component;
use crate::component::format_json_error;
use base64::{engine::general_purpose, Engine as _};
use mysql::prelude::Queryable;
use std::collections::HashMap;
use chrono::*;
use mysql::PooledConn;
use mysql_common::packets::Column;
pub fn execute_query(
client: &mut component::AddIn,
conn: &mut PooledConn,
query: String,
params_json: String,
force_result: bool
) -> String {
let pool = match client.connections {
Some(ref mut conns) => conns,
None => return format_json_error("No connections pool!")
};
// Парсинг JSON параметров
let mut parsed_params: Value = match serde_json::from_str(&params_json) {
Ok(params) => params,
@@ -29,11 +25,6 @@ pub fn execute_query(
None => return format_json_error("Parameters must be a JSON array")
};
let mut conn = match pool.get_conn(){
Ok(conn) => conn,
Err(e) => return format_json_error(e)
};
// Определяем тип запроса
if query.trim_start().to_uppercase().starts_with("SELECT") || force_result == true {
@@ -226,12 +217,3 @@ fn process_mysql_params(json_array: &mut Vec<Value>) -> Vec<mysql::Value> {
result
}
fn format_json_error<E: ToString>(error: E) -> String {
let error_message = error.to_string();
let json_obj = json!({
"result": false,
"error": error_message,
});
json_obj.to_string()
}

View File

@@ -42,7 +42,20 @@ pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn
let params_json = params[1].get_string().unwrap_or("".to_string());
let force_result = params[2].get_bool().unwrap_or(false);
Box::new(methods::execute_query(obj, query, params_json, force_result))
match obj.get_connection(){
Ok(mut conn) => {
let result = Box::new(methods::execute_query(&mut conn, query, params_json, force_result));
match conn.as_mut().ping(){
Ok(_) => obj.connection = Some(conn),
Err(_) => drop(conn)
}
result
},
Err(e) => Box::new(e),
}
},
3 => {
@@ -71,6 +84,7 @@ pub const PROPS: &[&[u16]] = &[
pub struct AddIn {
connection_string: String,
connections: Option<Pool>,
connection: Option<PooledConn>,
use_tls: bool,
accept_invalid_certs: bool,
ca_cert_path: String,
@@ -82,6 +96,7 @@ impl AddIn {
AddIn {
connection_string: String::new(),
connections: None,
connection: None,
use_tls: false,
accept_invalid_certs: false,
ca_cert_path: String::new(),
@@ -119,18 +134,37 @@ impl AddIn {
match Pool::new(opts_builder){
Ok(p) => {
self.connections = Some(p);
self.connection = match self.get_connection(){
Ok(p) => Some(p),
Err(e) => return Self::process_error(e.to_string().as_str())
};
json!({"result": true}).to_string()
},
Err(e) => Self::process_error(e.to_string().as_str())
}
}
pub fn close_connection(&mut self) -> String {
let mut closed = false;
// Закрываем активное соединение
if self.connection.take().is_some() {
closed = true;
}
// Закрываем пул соединений
if self.connections.take().is_some() {
closed = true;
}
if closed {
json!({"result": true}).to_string()
} else {
Self::process_error("Connection already closed")
Self::process_error("All connections are already closed")
}
}
@@ -147,6 +181,28 @@ impl AddIn {
json!({"result": true}).to_string()
}
fn get_connection(&mut self) -> Result<PooledConn, String>{
if let Some(mut conn) = self.connection.take() {
if conn.as_mut().ping().is_ok() {
return Ok(conn);
} else {
drop(conn);
}
}
let pool = match self.connections {
Some(ref mut conns) => conns,
None => return Err(format_json_error("No connections pool!"))
};
match pool.get_conn(){
Ok(conn) => Ok(conn),
Err(e) => Err(format_json_error(e))
}
}
fn process_error(e: &str) -> String{
json!({
"result": false,
@@ -170,3 +226,12 @@ impl AddIn {
impl Drop for AddIn {
fn drop(&mut self) {}
}
pub fn format_json_error<E: ToString>(error: E) -> String {
let error_message = error.to_string();
let json_obj = json!({
"result": false,
"error": error_message,
});
json_obj.to_string()
}

View File

@@ -1,12 +1,12 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffdd89b6000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f3167da3000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f316768e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f316746e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3167097000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3166e93000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3168091000)
libz.so.1 => /lib64/libz.so.1 (0x00007f3166c7b000)
linux-vdso.so.1 (0x00007ffc425ec000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f8d182a6000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f8d17b91000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8d17971000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8d1759a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8d17396000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8d18594000)
libz.so.1 => /lib64/libz.so.1 (0x00007f8d1717e000)
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.3

View File

@@ -1,9 +1,9 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffdf41d9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4817e95000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4817abe000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f48178ba000)
/lib64/ld-linux-x86-64.so.2 (0x00007f48180b5000)
linux-vdso.so.1 (0x00007ffc1f3ed000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc0516b4000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc0512dd000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc0510d9000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc0518d4000)
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.4

View File

@@ -1,10 +1,10 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffe86941000)
libm.so.6 => /lib64/libm.so.6 (0x00007f46b81b0000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f46b7f90000)
libc.so.6 => /lib64/libc.so.6 (0x00007f46b7bb9000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f46b79b5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f46b8532000)
linux-vdso.so.1 (0x00007ffcd9bf6000)
libm.so.6 => /lib64/libm.so.6 (0x00007f92c5ace000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f92c58ae000)
libc.so.6 => /lib64/libc.so.6 (0x00007f92c54d7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f92c52d3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f92c5e50000)
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.4

View File

@@ -1,12 +1,12 @@
"MAIN ---"
linux-vdso.so.1 (0x00007fffd3cc7000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007f2715a07000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f27152f2000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f27150d2000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2714cfb000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2714af7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2715cf5000)
libz.so.1 => /lib64/libz.so.1 (0x00007f27148df000)
linux-vdso.so.1 (0x00007ffc90d96000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007fb19a4c4000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007fb199daf000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb199b8f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb1997b8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb1995b4000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb19a7b2000)
libz.so.1 => /lib64/libz.so.1 (0x00007fb19939c000)
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.4

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -2627,6 +2627,7 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL" , ПараметрыТеста);
HTTPКлиент_Инициализировать(ПараметрыТеста);
HTTPКлиент_УстановитьURL(ПараметрыТеста);
КонецПроцедуры
@@ -21040,6 +21041,63 @@
#Область HTTP
Процедура HTTPКлиент_Инициализировать(ПараметрыФункции)
URL = ПараметрыФункции["HTTP_URL"];
URL = URL + "/get";
Результат = OPI_ЗапросыHTTP
.НовыйЗапрос()
.Инициализировать(URL)
.ОбработатьЗапрос("GET")
.ВернутьОтветКакJSONКоллекцию();
// END
Попытка
Результат["origin"] = "***";
Исключение
Сообщить("Не удалось заменить origin");
КонецПопытки;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "Инициализировать", "HTTPКлиент");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"].Количество()).Равно(0);
HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос()
.Инициализировать(URL)
.ОбработатьЗапрос("POST", Ложь);
HTTPЗапрос = HTTPКлиент.ВернутьЗапрос();
HTTPСоединение = HTTPКлиент.ВернутьСоединение();
HTTPОтвет = HTTPКлиент.ВернутьОтвет();
ОсновнойURL = СтрЗаменить(ПараметрыФункции["HTTP_URL"], "https://", "");
Попытка
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение).ИмеетТип("HTTPСоединение");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос.АдресРесурса).Равно("/get");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение.Сервер).Равно(ОсновнойURL);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPОтвет).Равно(Неопределено);
ДругойЗапрос = HTTPКлиент.УстановитьURL(ПараметрыФункции["HTTP_URL"] + "/post")
.ОбработатьЗапрос("POST", Ложь)
.ВернутьЗапрос();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ДругойЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ДругойЗапрос.АдресРесурса).Равно("/post");
Исключение
Сообщить(HTTPКлиент.ПолучитьЛог(Истина));
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Процедура HTTPКлиент_УстановитьURL(ПараметрыФункции)
URL = ПараметрыФункции["HTTP_URL"];
@@ -21053,11 +21111,44 @@
// END
Попытка
Результат["origin"] = "***";
Исключение
Сообщить("Не удалось заменить origin");
КонецПопытки;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьURL", "HTTPКлиент");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"].Количество()).Равно(0);
HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос()
.Инициализировать()
.УстановитьURL(URL)
.ОбработатьЗапрос("POST", Ложь);
HTTPЗапрос = HTTPКлиент.ВернутьЗапрос();
HTTPСоединение = HTTPКлиент.ВернутьСоединение();
HTTPОтвет = HTTPКлиент.ВернутьОтвет();
ОсновнойURL = СтрЗаменить(ПараметрыФункции["HTTP_URL"], "https://", "");
Попытка
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение).ИмеетТип("HTTPСоединение");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос.АдресРесурса).Равно("/get");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение.Сервер).Равно(ОсновнойURL);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPОтвет).Равно(Неопределено);
Исключение
Сообщить(HTTPКлиент.ПолучитьЛог(Истина));
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -77,6 +77,7 @@
Разделы.Вставить("TCP" , 5);
Разделы.Вставить("GreenAPI" , 5);
Разделы.Вставить("Ollama" , 5);
Разделы.Вставить("HTTPКлиент" , 5);
Возврат Разделы;
@@ -115,6 +116,7 @@
Разделы.Вставить("TCP" , СтандартныеЗависимости);
Разделы.Вставить("GreenAPI" , СтандартныеЗависимости);
Разделы.Вставить("Ollama" , СтандартныеЗависимости);
Разделы.Вставить("HTTPКлиент" , СтандартныеЗависимости);
Возврат Разделы;
@@ -149,7 +151,7 @@
RCON = "RCON";
MySQL = "MySQL";
Ollama = "Ollama";
Http = "HTTP";
Http = "HTTPКлиент";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");

View File

@@ -77,6 +77,7 @@
Разделы.Вставить("TCP" , 5);
Разделы.Вставить("GreenAPI" , 5);
Разделы.Вставить("Ollama" , 5);
Разделы.Вставить("HTTPКлиент" , 5);
Возврат Разделы;
@@ -115,6 +116,7 @@
Разделы.Вставить("TCP" , СтандартныеЗависимости);
Разделы.Вставить("GreenAPI" , СтандартныеЗависимости);
Разделы.Вставить("Ollama" , СтандартныеЗависимости);
Разделы.Вставить("HTTPКлиент" , СтандартныеЗависимости);
Возврат Разделы;
@@ -149,7 +151,7 @@
RCON = "RCON";
MySQL = "MySQL";
Ollama = "Ollama";
Http = "HTTP";
Http = "HTTPКлиент";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// MIT License
@@ -2627,6 +2627,7 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL" , ПараметрыТеста);
HTTPКлиент_Инициализировать(ПараметрыТеста);
HTTPКлиент_УстановитьURL(ПараметрыТеста);
КонецПроцедуры
@@ -21040,6 +21041,63 @@
#Область HTTP
Процедура HTTPКлиент_Инициализировать(ПараметрыФункции)
URL = ПараметрыФункции["HTTP_URL"];
URL = URL + "/get";
Результат = OPI_ЗапросыHTTP
.НовыйЗапрос()
.Инициализировать(URL)
.ОбработатьЗапрос("GET")
.ВернутьОтветКакJSONКоллекцию();
// END
Попытка
Результат["origin"] = "***";
Исключение
Сообщить("Не удалось заменить origin");
КонецПопытки;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "Инициализировать", "HTTPКлиент");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"].Количество()).Равно(0);
HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос()
.Инициализировать(URL)
.ОбработатьЗапрос("POST", Ложь);
HTTPЗапрос = HTTPКлиент.ВернутьЗапрос();
HTTPСоединение = HTTPКлиент.ВернутьСоединение();
HTTPОтвет = HTTPКлиент.ВернутьОтвет();
ОсновнойURL = СтрЗаменить(ПараметрыФункции["HTTP_URL"], "https://", "");
Попытка
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение).ИмеетТип("HTTPСоединение");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос.АдресРесурса).Равно("/get");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение.Сервер).Равно(ОсновнойURL);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPОтвет).Равно(Неопределено);
ДругойЗапрос = HTTPКлиент.УстановитьURL(ПараметрыФункции["HTTP_URL"] + "/post")
.ОбработатьЗапрос("POST", Ложь)
.ВернутьЗапрос();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ДругойЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ДругойЗапрос.АдресРесурса).Равно("/post");
Исключение
Сообщить(HTTPКлиент.ПолучитьЛог(Истина));
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Процедура HTTPКлиент_УстановитьURL(ПараметрыФункции)
URL = ПараметрыФункции["HTTP_URL"];
@@ -21053,11 +21111,44 @@
// END
Попытка
Результат["origin"] = "***";
Исключение
Сообщить("Не удалось заменить origin");
КонецПопытки;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьURL", "HTTPКлиент");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["args"].Количество()).Равно(0);
HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос()
.Инициализировать()
.УстановитьURL(URL)
.ОбработатьЗапрос("POST", Ложь);
HTTPЗапрос = HTTPКлиент.ВернутьЗапрос();
HTTPСоединение = HTTPКлиент.ВернутьСоединение();
HTTPОтвет = HTTPКлиент.ВернутьОтвет();
ОсновнойURL = СтрЗаменить(ПараметрыФункции["HTTP_URL"], "https://", "");
Попытка
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос).ИмеетТип("HTTPЗапрос");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение).ИмеетТип("HTTPСоединение");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPЗапрос.АдресРесурса).Равно("/get");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPСоединение.Сервер).Равно(ОсновнойURL);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(HTTPОтвет).Равно(Неопределено);
Исключение
Сообщить(HTTPКлиент.ПолучитьЛог(Истина));
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#КонецОбласти