46 lines
3.0 KiB
Markdown
46 lines
3.0 KiB
Markdown
|
# 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"
|
|||
|
```
|
|||
|
|