Netvision.ApiClient.NTechLab.FindFace 1.1.1
Клиент FindFace от NTechLab
Клиент сохраняет сгенерированный HTTP-контракт API FindFace 2.3.3 и использует
общие настройки endpoint-а из Netvision.ApiClient.Abstractions. Авторизация FindFace остаётся
специализированной: Basic login, затем заголовок Authorization: Token.
Дополнительные JSON-конвертеры обрабатывают особенности Python API FindFace,
который может возвращать null в полях, где это не предусмотрено спецификацией.
var configuration = ResolvedApiClientConfiguration.Create(
clientId,
clientSecret,
tokenUrl,
baseUrl,
validateServerCertificate);
services.AddFindFaceClient(configuration);
Конфигурация может быть прочитана из любой секции приложения. Например, AIG
использует NTechLabVendor:ClientId, ClientSecret, TokenUrl, BaseUrl и
необязательный ValidateServerCertificate. Проверка сертификата включена по
умолчанию.
Статусы калибровки proximity (Calibration_status)
Параметр calibration_status в swagger FindFace описан противоречиво:
type: integer, а в enum стоят строки (NOT_CALIBRATED, AWAITING_SYNC и т.д.).
Для Python это имена Django IntegerChoices, для NSwag — нет.
NSwag генерирует некомпилируемый enum:
public enum Calibration_status
{
_AWAITING_PROXIMITY_MODEL = AWAITING_PROXIMITY_MODEL,
// ...
}
Справа от = нет ни константы, ни числа. То же самое для Calibration_status2
(второй inline-enum у операции counters/count/).
Сгенерированный файл руками не править — следующая перегенерация всё сотрёт.
Обход:
- В
FindFaceApiClient.nswagвexcludedTypeNamesуказаныCalibration_statusиCalibration_status2. NSwag оставляет эти имена в сигнатурах, но сами enum не пишет. - Типы и числовые константы живут в
Netvision.ApiClient.NTechLab.FindFace/Contract/CalibrationStatus.cs. global using static CalibrationStatusConstantsнужен на случай, если NSwag всё же сгенерирует_NAME = NAME: правая часть тогда берётся из констант.
Числа совпадают с ProximityCalibrationStatusEnum из ответа API:
| Значение | Имя в swagger | Смысл |
|---|---|---|
| 1 | NOT_CALIBRATED |
калибровка не выполнялась |
| 2 | AWAITING_SYNC |
ожидание синхронизации |
| 3 | COLLECTING_CALIBRATION_DATA |
сбор данных для калибровки |
| 4 | AWAITING_PROXIMITY_MODEL |
ожидание модели proximity |
| 5 | CALIBRATED |
калибровка завершена |
В query уходит число, не строка (ConvertToString без [EnumMember]).
Что нельзя делать при перегенерации
- Убирать
Calibration_status/Calibration_status2изexcludedTypeNames. Иначе NSwag снова напишет сломанный enum, и он столкнётся с нашим (CS0101— дублирование типа). - Удалять
Contract/CalibrationStatus.cs. Тогда сигнатуры ссылаются на несуществующие типы (CS0246). - Править
FindFaceApiClient.generated.csпод эти enum. Правка не переживёт перегенерацию. - После перегенерации обязательно собрать проект. Если NSwag перестал исключать
типы — вернуть их в
excludedTypeNamesи не трогатьgenerated.cs.
NullFindFaceApiClient реализует IFindFaceApiClient вручную. Если после
перегенерации изменились сигнатуры CountersGet / CountersCount, stub нужно
подправить отдельно.
No packages depend on Netvision.ApiClient.NTechLab.FindFace.
.NET 10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Http (>= 10.0.5)
- Netvision.ApiClient.Abstractions (>= 2.0.0)
- Newtonsoft.Json (>= 13.0.3)
| Version | Downloads | Last updated |
|---|---|---|
| 1.1.1 | 42 | 09/21/2026 |
| 1.1.0 | 59 | 09/01/2026 |
| 1.0.0 | 117 | 07/16/2026 |
| 1.0.0-rc.2 | 11 | 07/15/2026 |
| 1.0.0-rc.1 | 14 | 07/15/2026 |
| 0.2.17 | 183 | 04/02/2026 |
| 0.2.16 | 20 | 03/31/2026 |