using System.Security.Cryptography.X509Certificates; namespace Hcs.ClientApi { /// /// Конфигурация клиента /// public class HcsClientConfig { /// /// Идентификатор поставщика данных ГИС /// public string OrgPPAGUID { get; set; } /// /// Идентификатор организации в ГИС /// public string OrgEntityGUID { get; set; } /// /// Тип криптопровайдера полученный из сертификата /// public GostXades.CryptoProviderTypeEnum CryptoProviderType { get; internal set; } public GostCryptography.Base.ProviderType GostCryptoProviderType => (GostCryptography.Base.ProviderType)CryptoProviderType; /// /// Сертификат клиента для применения при формировании запросов /// public X509Certificate2 Certificate { get; internal set; } /// /// Отпечаток сертификата /// public string CertificateThumbprint { get; internal set; } /// /// Пароль доступа к сертификату /// public string CertificatePassword { get; internal set; } /// /// Исполнитель/сотрудник ГИСЖКХ от которого будут регистрироваться ответы /// public string ExecutorGUID { get; set; } /// /// Признак - указывает на то, что используется внешний туннель (stunnel) /// public bool UseTunnel { get; set; } /// /// true - использовать адреса ППАК стенда иначе СИТ /// public bool IsPPAK { get; set; } /// /// Роль /// public HcsOrganizationRoles Role { get; set; } /// /// Устанавливаемый пользователем приемник отладочных сообщений /// public IHcsLogger Logger { get; set; } /// /// Выводит сообщение в установленный приемник отладочных сообщений /// public void Log(string message) => Logger?.WriteLine(message); /// /// Устанавливаемый пользователем механизм перехвата содержимого отправляемых /// и принимаемых пакетов /// public IHcsMessageCapture MessageCapture; /// /// Отправляет тело сообщения в установленный перехватчик /// public void MaybeCaptureMessage(bool sent, string messageBody) => MessageCapture?.CaptureMessage(sent, messageBody); public string ComposeEndpointUri(string endpointName) { if (UseTunnel) return $"http://{HcsConstants.Address.UriTunnel}/{endpointName}"; return IsPPAK ? $"https://{HcsConstants.Address.UriPPAK}/{endpointName}" : $"https://{HcsConstants.Address.UriSIT02}/{endpointName}"; } } }