You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-11-25 22:12:29 +02:00
Тесты HTTP, переработка соединений компоненты MySQL
This commit is contained in:
BIN
docs/docusaurus/static/img/Docs/Ollama/1.png
vendored
Normal file
BIN
docs/docusaurus/static/img/Docs/Ollama/1.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/docusaurus/static/img/Docs/Ollama/2.png
vendored
Normal file
BIN
docs/docusaurus/static/img/Docs/Ollama/2.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
14
docs/en/md/Instructions/Ollama.md
vendored
14
docs/en/md/Instructions/Ollama.md
vendored
@@ -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
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
||||

|
||||
|
||||
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`
|
||||
|
||||
15
docs/ru/md/Instructions/Ollama.md
vendored
15
docs/ru/md/Instructions/Ollama.md
vendored
@@ -7,6 +7,19 @@ sidebar_class_name: Ollama
|
||||
|
||||
# Ollama
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с Ollama. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с протоколом Ollama. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||
## Начало работы
|
||||
|
||||
1. Скачайте Ollama c [официального сайта](https://ollama.com/) и запустите на целевой машине
|
||||
|
||||

|
||||
|
||||
2. `(опционально)` Для получения возможности отправки своих моделей на сервера Ollama, требуется также создать аккаунт и добавить открытый ключ в локальное решение, следуя инструкциям из раздела [Ollama keys](https://ollama.com/settings/keys)
|
||||
|
||||

|
||||
|
||||
3. `(опционально)` Для добавления авторизации и возможности обработки запросов извне, необходимо настроить проксирование через сторонний веб-сервер
|
||||
|
||||
> По умолчанию сервер Ollama доступен только в локальной сети на `localhost:11434`
|
||||
14957
service/dictionaries/en.json
vendored
14957
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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(¶ms_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()
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
BIN
src/en/OInt/addins/OPI_MySQL.zip
vendored
BIN
src/en/OInt/addins/OPI_MySQL.zip
vendored
Binary file not shown.
BIN
src/en/OInt/addins/OPI_PostgreSQL.zip
vendored
BIN
src/en/OInt/addins/OPI_PostgreSQL.zip
vendored
Binary file not shown.
BIN
src/en/OInt/addins/OPI_RCON.zip
vendored
BIN
src/en/OInt/addins/OPI_RCON.zip
vendored
Binary file not shown.
BIN
src/en/OInt/addins/OPI_TCPClient.zip
vendored
BIN
src/en/OInt/addins/OPI_TCPClient.zip
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_MySQL.zip
vendored
BIN
src/ru/OInt/addins/OPI_MySQL.zip
vendored
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_PostgreSQL.zip
vendored
BIN
src/ru/OInt/addins/OPI_PostgreSQL.zip
vendored
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_RCON.zip
vendored
BIN
src/ru/OInt/addins/OPI_RCON.zip
vendored
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_TCPClient.zip
vendored
BIN
src/ru/OInt/addins/OPI_TCPClient.zip
vendored
Binary file not shown.
91
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
91
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -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Клиент.ПолучитьЛог(Истина));
|
||||
ВызватьИсключение ОписаниеОшибки();
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -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Клиент";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
|
||||
@@ -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Клиент";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
|
||||
@@ -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Клиент.ПолучитьЛог(Истина));
|
||||
ВызватьИсключение ОписаниеОшибки();
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user