<PackageReference Include="Relativity.Server.Transfer.SDK" Version="24000.0.1" />

ServiceFactory

using Relativity.Transfer.InstanceSettings; using Relativity.Transfer.InstanceSettings.Configuration; using Relativity.Transfer.Kepler; using Relativity.Transfer.Validator; using Relativity.Transfer.WebApi; using System; namespace Relativity.Transfer { internal class ServiceFactory : IServiceFactory, IRelativityServiceFactory, IWebApiServiceFactory, IInstanceSettingsConfigurationServiceFactory { private readonly IPathValidationProvider pathValidationProvider; protected ITransferLog TransferLog { get; } protected ClientConfiguration Configuration { get; } protected IToggle UseLegacyWebApiToggle { get; } public RelativityConnectionInfo ConnectionInfo { get; } public int MaxRetryAttempts { get; set; } public double TimeoutSeconds { get; set; } public IPathValidationProvider PathValidationProvider => pathValidationProvider ?? new PathValidationProvider(); public ServiceFactory(RelativityConnectionInfo connectionInfo, ClientConfiguration configuration, ITransferLog log) : this(connectionInfo, configuration, log, new PathValidationProvider()) { } public ServiceFactory(RelativityConnectionInfo connectionInfo, ClientConfiguration configuration, ITransferLog log, IPathValidationProvider pathValidationProvider) { if (connectionInfo == null) throw new ArgumentNullException("connectionInfo"); if (configuration == null) throw new ArgumentNullException("configuration"); if (log == null) throw new ArgumentNullException("log"); ConnectionInfo = connectionInfo; UseLegacyWebApiToggle = new UseLegacyWebApiToggle(configuration, log); TransferLog = log; MaxRetryAttempts = configuration.MaxHttpRetryAttempts; TimeoutSeconds = configuration.HttpTimeoutSeconds; Configuration = configuration; if (TimeoutSeconds <= 0) TimeoutSeconds = 300; this.pathValidationProvider = pathValidationProvider; } public ICredentialService CreateCredentialService() { return new CredentialServiceWithCache(new CredentialService(ConnectionInfo, Configuration, TransferLog), new MemoryCacheProvider()); } public IApmMetricsService CreateApmMetricsService() { return new ApmMetricsService(ConnectionInfo, Configuration, TransferLog); } public IInstanceDetailsService CreateInstanceDetailsService() { return new InstanceDetailsService(ConnectionInfo, Configuration, TransferLog); } public ITargetRateValidator CreateTargetRateValidator() { return new TargetRateValidator(CreateInstanceSettingsConfigurationService(), TransferLog); } public ITargetRateThrottler CreateTargetRateThrottler() { return new TargetRateThrottler(CreateInstanceSettingsConfigurationService(), TransferLog); } public IRelativityManagerService CreateRelativityManagerService(IUserManagerService service) { return DoCreateRelativityManagerService(service, Configuration); } public IRelativityManagerService CreateRelativityManagerService(IUserManagerService service, ClientConfiguration configuration) { return DoCreateRelativityManagerService(service, configuration); } public IResourcePoolService CreateResourcePoolService() { return new ResourcePoolService(ConnectionInfo, TransferLog, MaxRetryAttempts, TimeoutSeconds); } public IResourceServerService CreateResourceServerService() { return new ResourceServerService(ConnectionInfo, Configuration, TransferLog); } public IUserManagerService CreateUserManagerService() { return DoCreateUserManagerService(Configuration); } public IUserManagerService CreateUserManagerService(ClientConfiguration configuration) { return DoCreateUserManagerService(configuration); } public IWorkspaceService CreateWorkspaceService() { return new WorkspaceService(ConnectionInfo, Configuration, TransferLog); } public IFileShareService CreateFileShareService(int fileShareId) { return new FileShareService(ConnectionInfo, Configuration, fileShareId, TransferLog, true); } public IInstanceSettingService CreateInstanceSettingService() { return new InstanceSettingService(new InstanceSettingsLegacyKeplerRetriever(ConnectionInfo, TransferLog), ConnectionInfo, TransferLog); } public IInstanceSettingsConfigurationService CreateInstanceSettingsConfigurationService() { WebApiInstanceSettingsRetriever webApiInstanceSettingRetriever = new WebApiInstanceSettingsRetriever(this, ConnectionInfo, TransferLog); InstanceSettingsConfigurationWebApiRetriever webApiConfigurationRetriever = new InstanceSettingsConfigurationWebApiRetriever(TransferLog, webApiInstanceSettingRetriever); RestClient restClient = new RestClient(new HttpConnectionInfo(ConnectionInfo), TransferLog, TimeoutSeconds, 1); InstanceSettingsConfigurationKeplerRetriever keplerConfigurationRetriever = new InstanceSettingsConfigurationKeplerRetriever(TransferLog, ConnectionInfo, restClient); return new InstanceSettingsConfigurationServiceWithCache(new InstanceSettingsConfigurationService(TransferLog, UseLegacyWebApiToggle, webApiConfigurationRetriever, keplerConfigurationRetriever), new MemoryCacheProvider(), ConnectionInfo); } public IUserManagerService CreateUserManagerWebApiService(ClientConfiguration configuration) { configuration.UseLegacyWebApi = true; return new UserManagerWebApiService(ConnectionInfo, configuration, TransferLog); } public IRelativityManagerService CreateRelativityManagerWebApiService(IUserManagerService service, ClientConfiguration configuration) { configuration.UseLegacyWebApi = true; return new RelativityManagerWebApiService(ConnectionInfo, configuration, service, TransferLog); } private IRelativityManagerService DoCreateRelativityManagerService(IUserManagerService service, ClientConfiguration configuration) { if (!UseLegacyWebApiToggle.Value) return new RelativityManagerKeplerService(ConnectionInfo, configuration, TransferLog); return CreateRelativityManagerWebApiService(service, configuration); } private IUserManagerService DoCreateUserManagerService(ClientConfiguration configuration) { if (!UseLegacyWebApiToggle.Value) return new UserManagerKeplerService(); return CreateUserManagerWebApiService(configuration); } } }