using Hcs.Client.Internal; using Hcs.Client.Logger; using Hcs.Client.MessageCapturer; using System.Security.Cryptography.X509Certificates; namespace Hcs.Client { public abstract class ClientBase { /// /// Идентификатор поставщика данных ГИС ЖКХ /// public string OrgPPAGUID { get; set; } /// /// Исполнитель/сотрудник ГИС ЖКХ, от которого будут регистрироваться ответы /// public string ExecutorGUID { get; set; } /// /// Признак, указывающий на то, что используется ли внешний туннель (stunnel) /// public bool UseTunnel { get; set; } /// /// Если true, то запросы будут выполняться на промышленном стенде, иначе - на тестовом /// public bool IsPPAK { get; set; } /// /// Роль /// public OrganizationRole Role { get; set; } /// /// Устанавливаемый пользователем приемник отладочных сообщений /// public ILogger Logger { get; set; } /// /// Устанавливаемый пользователем механизм перехвата содержимого отправляемых /// и принимаемых пакетов /// public IMessageCapturer MessageCapturer { get; set; } /// /// Сертификат клиента для применения при формировании запросов /// internal X509Certificate2 Certificate { get; set; } /// /// Тип криптопровайдера, полученный из сертификата /// internal GostXades.CryptoProviderTypeEnum CryptoProviderType { get; set; } internal GostCryptography.Base.ProviderType GostCryptoProviderType => (GostCryptography.Base.ProviderType)CryptoProviderType; /// /// Отпечаток сертификата /// internal string CertificateThumbprint { get; set; } /// /// Пароль доступа к сертификату /// internal string CertificatePassword { get; set; } internal string ComposeEndpointUri(string endpointName) { if (UseTunnel) { return $"http://{Constants.URI_TUNNEL}/{endpointName}"; } return IsPPAK ? $"https://{Constants.URI_PPAK}/{endpointName}" : $"https://{Constants.URI_SIT_02}/{endpointName}"; } /// /// Пробует вывести сообщение в установленный приемник отладочных сообщений /// internal void TryLog(string message) { Logger?.WriteLine(message); } /// /// Пробует отправить тело сообщения в установленный перехватчик /// internal void TryCaptureMessage(bool sent, string messageBody) { MessageCapturer?.CaptureMessage(sent, messageBody); } } }