{"id":18050574,"url":"https://github.com/ehpc/platform-service-bus","last_synced_at":"2026-04-30T01:31:23.624Z","repository":{"id":138756023,"uuid":"207327837","full_name":"ehpc/platform-service-bus","owner":"ehpc","description":"Transformation proxy in Go.","archived":false,"fork":false,"pushed_at":"2019-10-01T09:41:38.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-10T14:12:33.165Z","etag":null,"topics":["golang","proxy"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehpc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-09T14:23:21.000Z","updated_at":"2019-10-01T09:41:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f1df92f-737c-4bd4-9cf6-c778cd07a67e","html_url":"https://github.com/ehpc/platform-service-bus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehpc%2Fplatform-service-bus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehpc%2Fplatform-service-bus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehpc%2Fplatform-service-bus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehpc%2Fplatform-service-bus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehpc","download_url":"https://codeload.github.com/ehpc/platform-service-bus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247296222,"owners_count":20915598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","proxy"],"created_at":"2024-10-30T21:12:22.006Z","updated_at":"2026-04-30T01:31:18.603Z","avatar_url":"https://github.com/ehpc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Как это работает\r\n\r\nДанный сервис перенаправляет входящие запросы на указанные адреса, \r\nпредварительно сформировав кастомизированный ответ.\r\n\r\nСервис описывается следующими сущностями:\r\n\r\n- *Конфигурация* - JSON-описание требуемого поведения сервиса.\r\nКонфигурация включает в себя множество адаптеров.\r\n\r\n- *Адаптер* - сервер, который обрабатывает входящие запросы по заданному порту. \r\nАдаптер включает в себя множество правил.\r\n\r\n- *Правило* - описание входящих и исходящих запросов.\r\n\r\n`Конфигурация -\u003e0..*-\u003e Адаптер -\u003e0..*-\u003e Правило`\r\n\r\nВсе сущности прописываются в JSON-формате в файле `config/config.json`.\r\n\r\nПример с комментариями:\r\n\r\n```\r\n{\r\n    \"adapters\": [\r\n        {\r\n            \"name\": \"World SMS\",                    // Название адаптера\r\n            \"port\": 8700,                           // Порт, по которому поднимается сервер для адаптера\r\n            \"rules\": [                              // Список правил\r\n                {\r\n                    \"from\": {                       // Входящий запрос\r\n                        \"path\": \"/dlr\",             // Путь, на который поступает входящий запрос\r\n                        \"http-method\": \"GET\"        // HTTP-метод входящего запроса\r\n                    },\r\n                    \"to\": {                                         // Исходящий запрос\r\n                        \"url\": \"https://httpbin.org/post\",          // Адрес исходящего запроса\r\n                        \"http-method\": \"POST\",                      // HTTP-метод исходящего запроса\r\n                        \"headers\": [                                // Хедеры исходящего запроса\r\n                            \"Content-Type: text/xml\"\r\n                        ],\r\n                        \"data-file\": \"config/world-sms-dlr-to.xml\"  // Файл шаблона тела исходящего запроса\r\n                    }\r\n                }\r\n            ]\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\n# Шаблоны\r\n\r\nДля того, чтобы соединить входящий запрос с исходящим, используются шаблоны. \r\nШаблоны содержат тело исходящего запроса с возможными подставновками. \r\nПри отправке исходящего запроса подстановки заменяются реальными данными.\r\n\r\nСписок подстановок:\r\n\r\n- *%BODY%* - тело входящего запроса.\r\n\r\n- *%QUERY[param1]%* - GET-параметр входящего запроса с имененем *param1*.\r\n\r\n- *%REGEX[from\u003e([^\u003c\\\\s]+)][1]%* - регулярное выражение. Во вторых квадратных\r\nскобках содержится индекс группы. Поддерживаются только регулярные выражения Go:\r\nhttps://golang.org/pkg/regexp/syntax/.\r\n\r\n# Сборка проекта\r\n\r\nНеобходимо выполнить следующие команды:\r\n\r\n## Windows\r\n\r\n```\r\nmake.bat\r\n```\r\n\r\n## Linux\r\n\r\n```\r\nmake\r\n```\r\n\r\n# Запуск\r\n\r\nЗапускать следует собранный исполняемый файл `platform-service-bus(.exe)`.\r\n\r\n## Аргументы командной строки\r\n\r\n`-log \u003cимя_файла\u003e` - путь для файла логирования.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehpc%2Fplatform-service-bus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehpc%2Fplatform-service-bus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehpc%2Fplatform-service-bus/lists"}