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}";
}
}
}