Skip to content

Commit e6ac8e4

Browse files
authored
Merge pull request Stivo182#16 from Stivo182/v2.0.0
V2.0.0
2 parents 0716069 + 9c2addf commit e6ac8e4

18 files changed

+1048
-395
lines changed

.gitignore

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
.vscode/*
2-
coverage/*
3-
out/*
4-
oscript_modules/*
5-
*.ospx
1+
# OneScript
2+
Components/
3+
out/
4+
oscript_modules/
5+
*.ospx
6+
7+
# VS Code
8+
.vscode/

README.md

Lines changed: 110 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@
33
[![Release](https://img.shields.io/github/release/Stivo182/oscript-httpbin.svg)](https://github.com/Stivo182/oscript-httpbin/releases)
44
[![Тестирование](https://github.com/stivo182/oscript-httpbin/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/stivo182/oscript-httpbin/actions/workflows/test.yml)
55
[![Статус порога качества](https://sonar.openbsl.ru/api/project_badges/measure?project=httpbin&metric=alert_status&token=sqb_2f7c84743fd1b295085c25a1b96cc8d975cd4dc7)](https://sonar.openbsl.ru/dashboard?id=httpbin)
6-
[![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=httpbin&metric=coverage&token=sqb_2f7c84743fd1b295085c25a1b96cc8d975cd4dc7)](https://sonar.openbsl.ru/dashboard?id=httpbin)
76

8-
Cервис позволяющий локально тестировать HTTP клиент. Разработан на [OneScript](https://github.com/EvilBeaver/OneScript) + [WINOW](https://github.com/autumn-library/winow). Поддерживает бо́льшую часть эндпоинтов [httpbin.org](https://httpbin.org/).
7+
Локальный сервис для тестирования и отладки HTTP-запросов, реализованный на [OneScript](https://github.com/EvilBeaver/OneScript) с использованием фреймворка [WINOW](https://github.com/autumn-library/winow).
8+
Проект предоставляет функциональность, аналогичную [httpbin.org](https://httpbin.org/), поддерживая большинство оригинальных эндпоинтов.
99

1010
* 1\. [Установка](#installation)
1111
* 2\. [Использование](#usage)
1212
* 2.1\. [CLI приложение](#cli-app)
13-
* 2.2\. [Тестирование через asserts и 1connector](#testing)
13+
* 2.2\. [Тестирование с asserts и 1connector](#testing)
1414
* 2.3\. [Swagger UI](#swagger-ui)
1515
* 3\. [Совместимость](#compatibility)
1616
* 4\. [Программный интерфейс](#api)
17-
* 5\. [Ограничения](#limitations)
18-
* 6\. [Сравнение с httpbin.org](#comparison)
17+
* 5\. [Пользовательские эндпоинты](#custom-endpoints)
18+
* 6\. [Ограничения](#limitations)
19+
* 7\. [Сравнение с httpbin.org](#comparison)
1920

2021
## Установка <a name="installation"></a>
2122

@@ -27,16 +28,26 @@ opm install httpbin
2728

2829
### CLI приложение <a name="cli-app"></a>
2930

30-
Запуск сервиса через команду **run**: `httpbin run`
31+
Запустите сервис с помощью команды:
3132

32-
Опции команды:</br>
33-
`-h`, `--host` - имя хоста / IP адрес сервиса</br>
34-
`-p`, `--port` - порт сервиса
33+
``` bash
34+
httpbin run
35+
```
36+
37+
#### Опции команды:
38+
39+
| Опция | Описание | Значение по умолчанию |
40+
| --- | --- | --- |
41+
| `-h`, `--host` | Имя хоста или IP-адрес сервиса | `127.0.0.1` |
42+
| `-p`, `--port` | TCP-порт сервиса | `3333` |
43+
| `--routes-handlers` | Путь к файлу или каталогу кастомных контроллеров | |
44+
45+
### Тестирование с [asserts](https://github.com/oscript-library/asserts) и [1connector](https://github.com/vbondarevsky/1connector) <a name="testing"></a>
3546

36-
### Тестирование через [asserts](https://github.com/oscript-library/asserts) и [1connector](https://github.com/vbondarevsky/1connector) <a name="testing"></a>
3747

38-
_test.os:_
3948
``` bsl
49+
# test.os
50+
4051
#Использовать asserts
4152
#Использовать 1connector
4253
#Использовать httpbin
@@ -56,74 +67,120 @@ _test.os:_
5667
5768
&Тест
5869
Процедура ТестДолжен_ПроверитьПараметрыЗапроса() Экспорт
70+
5971
ПараметрыЗапроса = Новый Структура();
6072
ПараметрыЗапроса.Вставить("key", "value");
6173
62-
Ответ = КоннекторHTTP.Get(HttpBin.URL() + "/get", ПараметрыЗапроса);
74+
Ответ = КоннекторHTTP.Get(HttpBin.URL("/get"), ПараметрыЗапроса);
6375
6476
Ожидаем.Что(Ответ.КодСостояния).Равно(200);
6577
Ожидаем.Что(Ответ.Заголовки["Content-Type"]).Содержит("application/json");
6678
Ожидаем.Что(Ответ.Json()["args"]["key"]).Равно("value");
79+
6780
КонецПроцедуры
6881
```
6982

7083
### Swagger UI
7184

72-
На стартовой странице сервиса (адрес по умолчанию: `http://127.0.0.1:3334`) доступна визуальная документация API, а также возможность отправки запросов и получения ответов.
85+
На стартовой странице сервиса (по умолчанию: `http://127.0.0.1:3333`) доступна интерактивная документация API через **Swagger UI**, а также возможность отправки запросов и получения ответов.
7386

7487
## Совместимость <a name="compatibility"></a>
7588

76-
<table>
77-
<thead>
78-
<tr>
79-
<th colspan="2">Windows</th>
80-
<th colspan="2">Linux</th>
81-
<th colspan="2">MacOS</th>
82-
</tr>
83-
<tr>
84-
<th>OneScript 1.9</th>
85-
<th>OneScript 2.0</th>
86-
<th>OneScript 1.9</th>
87-
<th>OneScript 2.0</th>
88-
<th>OneScript 1.9</th>
89-
<th>OneScript 2.0</th>
90-
</tr>
91-
</thead>
92-
<tbody>
93-
<tr>
94-
<td align="center">✅</td>
95-
<td align="center">✅</td>
96-
<td align="center">✅</td>
97-
<td align="center">✅</td>
98-
<td align="center">✅</td>
99-
<td align="center">✅</td>
100-
</tr>
101-
</tbody>
102-
</table>
89+
Сервис протестирован и поддерживается на следующих платформах и версиях OneScript:
90+
91+
| ОС | OneScript 1.9 | OneScript 2.0 |
92+
| --- | --- | --- |
93+
| **Windows** |||
94+
| **Linux** |||
95+
| **MacOS** |||
10396

10497
## Программный интерфейс <a name="api"></a>
10598

10699
### Класс `HttpBin`
107100

108-
Сервис по умолчанию запускается по адресу `127.0.0.1:3334` в фоновом режиме и с ожиданием завершения запуска сервиса.</br>
109-
Класс реализован с текучим интерфейсом.
101+
Класс предназначен для управления локальным HTTP-сервисом.
102+
Реализован с использованием текучего интерфейса.
103+
104+
#### Синтаксис
105+
106+
`Новый HttpBin(<Хост>, <Порт>)`
107+
108+
#### Параметры
109+
110+
<ins><Хост> (необязательный)</ins></br>
111+
Тип: _Строка_.</br>
112+
IP-адрес или имя хоста.</br>
113+
По умолчанию: _127.0.0.1_
114+
115+
<ins><Порт> (необязательный)</ins></br>
116+
Тип: _Число_.</br>
117+
Номер TCP-порта.</br>
118+
По умолчанию: _3333_
119+
120+
#### Методы
110121

111122
| Метод | Описание |
112123
| --- | --- |
113-
| `Запустить()` | Запускает сервис |
114-
| `Остановить()` | Останавливает сервис |
115-
| `URL()` | URL сервиса |
116-
| `Хост()` | Хост сервиса |
117-
| `Порт()` | Порт сервиса |
118-
| `УстановитьХост(<Хост>)` | Устанавливает хост сервиса |
119-
| `УстановитьПорт(<Порт>)` | Устанавливает порт сервиса |
120-
| `ЗапускатьВФоне(<Флаг>)` | Запуск сервиса будет выполнен в фоновом режиме |
121-
| `ОжидатьЗапуск(<Флаг>)` | Ожидать завершение запуска сервиса, запущенного в фоновом режиме |
122-
| `УстановитьТаймаутОжидания(<Таймаут>)` | Устанавливает таймаут ожидания запуска сервиса, запущенного в фоновом режиме |
124+
| `Запустить()` | Запускает сервис в синхронном режиме с ожиданием полной готовности. |
125+
| `ЗапуститьАсинх()` | Запускает сервис в асинхронном режиме без ожидания готовности. |
126+
| `Остановить()` | Останавливает сервис. |
127+
| `ОжидатьЗавершения()` | Ожидает завершения работы сервиса, приостанавливая выполнение текущего потока. |
128+
| `Отвечает()` | Проверяет доступность сервиса через HTTP-запрос. |
129+
| `Активен()` | Проверяет, что процесс сервиса запущен и не завершен. |
130+
| `Порт()` | Возвращает номер TCP-порта, на котором работает сервис. |
131+
| `УстановитьПорт(<Порт>)` | Устанавливает TCP-порт для запуска сервиса. |
132+
| `Хост()` | Возвращает имя хоста или IP-адрес сервиса. |
133+
| `УстановитьХост(<Хост>)` | Устанавливает имя хоста или IP-адрес для запуска сервиса. |
134+
| `URL(<АдресРесурса>)` | Формирует полный URL-адрес сервиса с опциональным путем к ресурсу. |
135+
| `ТаймаутЗапуска()` | Возвращает текущее значение таймаута запуска сервиса. |
136+
| `УстановитьТаймаутЗапуска(<Таймаут>)` | Устанавливает максимальное время ожидания запуска сервиса. Применяется при синхронном запуске. |
137+
| `РасположениеКонтроллеров()` | Возвращает текущий путь к файлу или каталогу с кастомными контроллерами. |
138+
| `УстановитьРасположениеКонтроллеров(<Расположение>)` | Устанавливает путь к файлу или каталогу с кастомными контроллерами, определяющими точки маршрута сервиса. |
139+
140+
## Пользовательские эндпоинты <a name="custom-endpoints"></a>
141+
142+
Сервис поддерживает подключение пользовательских контроллеров для добавления собственных эндпоинтов.
143+
144+
### Создание контроллера
145+
146+
Контроллер реализуется в виде класса OneScript с аннотацией `&Контроллер`.
147+
В нём определяются точки маршрута (эндпоинты) с помощью аннотации `&ТочкаМаршрута`.
148+
Подробнее см. в документации [WINOW](https://github.com/autumn-library/winow).
149+
150+
**Пример контроллера**
151+
152+
``` bsl
153+
&Контроллер("/order")
154+
Процедура ПриСозданииОбъекта()
155+
КонецПроцедуры
156+
157+
&ТочкаМаршрута("add")
158+
Процедура Главная(Ответ) Экспорт
159+
// Бизнес-логика
160+
КонецПроцедуры
161+
```
162+
163+
### Подключение контроллеров
164+
165+
**Через программный интерфейс**
166+
167+
Для подключения кастомных контроллеров используйте метод `УстановитьРасположениеКонтроллеров()`, указав путь к файлу или каталогу с контроллерами:
168+
169+
``` bsl
170+
HttpBin = Новый HttpBin()
171+
.УстановитьРасположениеКонтроллеров("./path/to/routes")
172+
.Запустить();
173+
```
174+
175+
**Через CLI**
176+
177+
``` bash
178+
httpbin run --routes-handlers './path/to/routes-handlers'
179+
```
123180

124181
## Ограничения <a name="limitations"></a>
125182

126-
На данный момент нет поддержки https.
183+
- **Отсутствие поддержки HTTPS**: Сервис работает только по протоколу HTTP.
127184

128185
## Сравнение с httpbin.org <a name="comparison"></a>
129186

autumn-properties.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,5 @@
44
"КаталогиСФайлами": {
55
"/static": "./src/app/view/static"
66
}
7-
},
8-
"cli": {
9-
"ИмяПриложения": "httpbin",
10-
"ПолноеИмяПриложения": "Cервис тестирования HTTP клиента",
11-
"ВерсияПриложения": "1.3.0"
127
}
138
}

lib.config

Lines changed: 0 additions & 3 deletions
This file was deleted.

packagedef

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
Описание.Имя("httpbin")
2-
.Версия("1.3.0")
2+
.Версия("2.0.0")
33
.Автор("Dmitry Ivanov")
44
.АдресАвтора("https://github.com/Stivo182")
5-
.Описание("Сервис тестирования HTTP клиента")
5+
.АдресРепозитория("https://github.com/Stivo182/oscript-httpbin")
6+
.Описание("Сервис для тестирования и отладки HTTP-запросов")
67
.ВерсияСреды("1.9.2")
78
.ВключитьФайл("src")
8-
.ВключитьФайл("tests")
99
.ВключитьФайл("packagedef")
10-
.ВключитьФайл("lib.config")
1110
.ВключитьФайл("autumn-properties.json")
11+
.ВключитьФайл("appsettings.json")
1212
.ВключитьФайл("README.md")
1313
.ВключитьФайл("LICENSE")
1414
.ЗависитОт("autumn", "4.3.11")
1515
.ЗависитОт("autumn-cli", "1.2.0")
1616
.ЗависитОт("winow", "0.11.0")
1717
.ЗависитОт("compressor", "1.0.2")
1818
.ЗависитОт("1connector", "2.3.3")
19+
.ЗависитОт("packageinfo", "1.1.1")
20+
.ЗависитОт("fs", "1.2.0")
21+
.ЗависитОт("logos", "1.7.1")
1922
.РазработкаЗависитОт("1testrunner")
2023
.РазработкаЗависитОт("asserts")
2124
.РазработкаЗависитОт("coverage")
2225
.РазработкаЗависитОт("1commands")
23-
.РазработкаЗависитОт("fs")
2426
.РазработкаЗависитОт("jason")
27+
.ОпределяетКласс("HttpBin", "src/core/Классы/HttpBin.os")
2528
.ИсполняемыйФайл("src/cmd/main.os", "httpbin")

0 commit comments

Comments
 (0)