RelativityManagerService
Represents a class object to provide a RelativityManager WebAPI wrapper.
using Polly;
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Net;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace Relativity.DataExchange.Service
{
internal class RelativityManagerService : WebApiServiceBase, IRelativityManagerService
{
[GeneratedCode("wsdl", "4.6.1055.0")]
[DebuggerStepThrough]
[DesignerCategory("code")]
[WebServiceBinding]
private class RelativityManager
{
[SoapDocumentMethod("http://www.kCura.com/EDDS/RelativityManager/GetRelativityUrl")]
public string GetRelativityUrl()
{
return (string)this.Invoke("GetRelativityUrl", new object[0])[0];
}
public RelativityManager()
: this()
{
}
}
public RelativityManagerService(RelativityInstanceInfo instanceInfo)
: base(instanceInfo)
{
}
protected RelativityManagerService(RelativityInstanceInfo instanceInfo, IObjectCacheRepository repository, IAppSettings appSettings)
: base(instanceInfo, repository, appSettings)
{
}
public Uri GetRelativityUrl()
{
string webApiServiceUrl = base.InstanceInfo.WebApiServiceUrl.ToString();
string cacheKey = CacheKeys.CreateRelativityUrlCacheKey(webApiServiceUrl);
Uri relativityUrl = base.CacheRepository.SelectByKey<Uri>(cacheKey);
if (relativityUrl != (Uri)null)
return relativityUrl;
Initialize();
return RetrySyntax.WaitAndRetry(Policy.Handle<Exception>((Func<Exception, bool>)((Exception exception) => !ExceptionHelper.IsFatalException(exception))), base.AppSettings.IoErrorNumberOfRetries, (Func<int, TimeSpan>)((int retryAttempt) => TimeSpan.FromSeconds((double)base.AppSettings.IoErrorWaitTimeInSeconds)), (Action<Exception, TimeSpan>)delegate(Exception exception, TimeSpan span) {
LogError(exception, $"""{span}", Array.Empty<object>());
}).Execute<Uri>((Func<Uri>)delegate {
RelativityManager relativityManager = new RelativityManager();
try {
relativityManager.set_Url(webApiServiceUrl.CombineUrls("RelativityManager.asmx"));
relativityManager.set_CookieContainer(base.InstanceInfo.CookieContainer);
relativityManager.set_Credentials(CredentialCache.DefaultCredentials);
relativityManager.set_Timeout((int)TimeSpan.FromSeconds((double)base.AppSettings.WebApiOperationTimeout).TotalMilliseconds);
string relativityUrl2 = relativityManager.GetRelativityUrl();
relativityUrl = new Uri(relativityUrl2);
base.CacheRepository.Upsert(cacheKey, relativityUrl);
return relativityUrl;
} finally {
((IDisposable)relativityManager)?.Dispose();
}
});
}
}
}