Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ehpc/platform-service-bus

Transformation proxy in Go.
https://github.com/ehpc/platform-service-bus

golang proxy

Last synced: 5 days ago
JSON representation

Transformation proxy in Go.

Awesome Lists containing this project

README

        

# Как это работает

Данный сервис перенаправляет входящие запросы на указанные адреса,
предварительно сформировав кастомизированный ответ.

Сервис описывается следующими сущностями:

- *Конфигурация* - JSON-описание требуемого поведения сервиса.
Конфигурация включает в себя множество адаптеров.

- *Адаптер* - сервер, который обрабатывает входящие запросы по заданному порту.
Адаптер включает в себя множество правил.

- *Правило* - описание входящих и исходящих запросов.

`Конфигурация ->0..*-> Адаптер ->0..*-> Правило`

Все сущности прописываются в JSON-формате в файле `config/config.json`.

Пример с комментариями:

```
{
"adapters": [
{
"name": "World SMS", // Название адаптера
"port": 8700, // Порт, по которому поднимается сервер для адаптера
"rules": [ // Список правил
{
"from": { // Входящий запрос
"path": "/dlr", // Путь, на который поступает входящий запрос
"http-method": "GET" // HTTP-метод входящего запроса
},
"to": { // Исходящий запрос
"url": "https://httpbin.org/post", // Адрес исходящего запроса
"http-method": "POST", // HTTP-метод исходящего запроса
"headers": [ // Хедеры исходящего запроса
"Content-Type: text/xml"
],
"data-file": "config/world-sms-dlr-to.xml" // Файл шаблона тела исходящего запроса
}
}
]
}
]
}
```

# Шаблоны

Для того, чтобы соединить входящий запрос с исходящим, используются шаблоны.
Шаблоны содержат тело исходящего запроса с возможными подставновками.
При отправке исходящего запроса подстановки заменяются реальными данными.

Список подстановок:

- *%BODY%* - тело входящего запроса.

- *%QUERY[param1]%* - GET-параметр входящего запроса с имененем *param1*.

- *%REGEX[from>([^<\\s]+)][1]%* - регулярное выражение. Во вторых квадратных
скобках содержится индекс группы. Поддерживаются только регулярные выражения Go:
https://golang.org/pkg/regexp/syntax/.

# Сборка проекта

Необходимо выполнить следующие команды:

## Windows

```
make.bat
```

## Linux

```
make
```

# Запуск

Запускать следует собранный исполняемый файл `platform-service-bus(.exe)`.

## Аргументы командной строки

`-log <имя_файла>` - путь для файла логирования.