persistence/Persistence.Client/Readme.md

46 lines
3.0 KiB
Markdown
Raw Normal View History

# Persistence Client Nuget Readme
## Краткое описание Persistence сервиса
Persistence сервис отвечает за работу с хранимыми данными
в рамках совокупности различных систем.
## Описание пакета
Данный пакет предоставляет возможность взаимодействия с
Persistence сервисом посредством обращения к конкретному
клиенту, ответсвенному за работу с одной из областей сервиса.
## Список предоставляемых клиентов
- `ISetpointClient` - Клиент для работы с уставками
- `ITechMessagesClient` - Клиент для работы с технологическими сообщениями
- `ITimeSeriesClient` - Клиент для работы с временными данными
- `ITimestampedSetClient` - Клиент для работы с данными с отметкой времени
## Использование
Для получения того или иного Persistence - клиента нужно
обращаться к фабрике Persistence клиентов - `PersistenceClientFactory`. Для этого требуется:
1. Добавить в проект фабрику HTTP - клиентов `IHttpClientFactory`.
<br>Она должна предоставлять HTTP - клиента через метод `GetClient()`.
>В том случае, если фабрика клиентов предоставляет не авторизованного клиента -
необходимо добавить в проект фабрику токенов аутентификации `IAuthTokenFactory` с методом `GetToken()`,
возвращающем токен в виде строки (без префикса `Bearer`).
2. Добавить логирование `ILoger`
3. Внедрить зависимость в проект `services.AddSingleton<PersistenceClientFactory>();` - пример.
4. Обратиться к фабрике Persistence - клиентов и получить требуемого клиента.
## xunit тестирование
При написании интеграционных тестов с ипользованием Persistence - клиентов
Http - клиент не обязан быть авторизован через передачу токена в `PersistenceClientFactory`.
Для осуществления тестовой авторизации достаточно добавить в `appsettings.Tests.json`.
При этом возможна авторизация через `KeyCloak`.
```json
"NeedUseKeyCloak": false,
"AuthUser": {
"username": "myuser",
"password": 12345,
"clientId": "webapi",
"grantType": "password"
},
"KeycloakGetTokenUrl": "http://192.168.0.10:8321/realms/Persistence/protocol/openid-connect/token"
```