98 lines
3.6 KiB
C#
98 lines
3.6 KiB
C#
using Hcs.Client.Internal;
|
|
using Hcs.Client.Logger;
|
|
using Hcs.Client.MessageCapturer;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
|
|
namespace Hcs.Client
|
|
{
|
|
public abstract class ClientBase
|
|
{
|
|
/// <summary>
|
|
/// Идентификатор поставщика данных ГИС ЖКХ
|
|
/// </summary>
|
|
public string OrgPPAGUID { get; set; }
|
|
|
|
/// <summary>
|
|
/// Исполнитель/сотрудник ГИС ЖКХ, от которого будут регистрироваться ответы
|
|
/// </summary>
|
|
public string ExecutorGUID { get; set; }
|
|
|
|
/// <summary>
|
|
/// Признак, указывающий на то, что используется ли внешний туннель (stunnel)
|
|
/// </summary>
|
|
public bool UseTunnel { get; set; }
|
|
|
|
/// <summary>
|
|
/// Если true, то запросы будут выполняться на промышленном стенде, иначе - на тестовом
|
|
/// </summary>
|
|
public bool IsPPAK { get; set; }
|
|
|
|
/// <summary>
|
|
/// Роль
|
|
/// </summary>
|
|
public OrganizationRole Role { get; set; }
|
|
|
|
/// <summary>
|
|
/// Устанавливаемый пользователем приемник отладочных сообщений
|
|
/// </summary>
|
|
public ILogger Logger { get; set; }
|
|
|
|
/// <summary>
|
|
/// Устанавливаемый пользователем механизм перехвата содержимого отправляемых
|
|
/// и принимаемых пакетов
|
|
/// </summary>
|
|
public IMessageCapturer MessageCapturer { get; set; }
|
|
|
|
/// <summary>
|
|
/// Сертификат клиента для применения при формировании запросов
|
|
/// </summary>
|
|
internal X509Certificate2 Certificate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Тип криптопровайдера, полученный из сертификата
|
|
/// </summary>
|
|
internal GostXades.CryptoProviderTypeEnum CryptoProviderType { get; set; }
|
|
|
|
internal GostCryptography.Base.ProviderType GostCryptoProviderType =>
|
|
(GostCryptography.Base.ProviderType)CryptoProviderType;
|
|
|
|
/// <summary>
|
|
/// Отпечаток сертификата
|
|
/// </summary>
|
|
internal string CertificateThumbprint { get; set; }
|
|
|
|
/// <summary>
|
|
/// Пароль доступа к сертификату
|
|
/// </summary>
|
|
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}";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Пробует вывести сообщение в установленный приемник отладочных сообщений
|
|
/// </summary>
|
|
internal void TryLog(string message)
|
|
{
|
|
Logger?.WriteLine(message);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Пробует отправить тело сообщения в установленный перехватчик
|
|
/// </summary>
|
|
internal void TryCaptureMessage(bool sent, string messageBody)
|
|
{
|
|
MessageCapturer?.CaptureMessage(sent, messageBody);
|
|
}
|
|
}
|
|
}
|