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/).

Сгенерированный файл руками не править — следующая перегенерация всё сотрёт.

Обход:

  1. В FindFaceApiClient.nswag в excludedTypeNames указаны Calibration_status и Calibration_status2. NSwag оставляет эти имена в сигнатурах, но сами enum не пишет.
  2. Типы и числовые константы живут в Netvision.ApiClient.NTechLab.FindFace/Contract/CalibrationStatus.cs.
  3. 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.

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