public OperationalData GetOperationalData(XRoadExchangeParameters xRoadExchangeParameters, SecurityServerIdentifier securityServerIdentifier, SearchCriteria searchCriteria) { byte[] attachmentBytes = { }; var client = SoapClient.Prepare() .WithHandler(new DelegatingSoapHandler { OnHttpResponseAsyncAction = async(soapClient, httpContext, cancellationToken) => { if (httpContext.Response.Content.IsMimeMultipartContent()) { var streamProvider = await httpContext.Response.Content.ReadAsMultipartAsync(cancellationToken); var contentCursor = streamProvider.Contents.GetEnumerator(); contentCursor.MoveNext(); var soapResponse = contentCursor.Current; contentCursor.MoveNext(); var attachment = contentCursor.Current; contentCursor.Dispose(); attachmentBytes = await attachment.ReadAsByteArrayAsync(); httpContext.Response.Content = soapResponse; } } }); var body = SoapEnvelope.Prepare().Body(new GetSecurityServerOperationalData { SearchCriteria = searchCriteria }).WithHeaders(new List <SoapHeader> { IdHeader.Random, UserIdHeader, ProtocolVersionHeader.Version40, (XRoadClient)xRoadExchangeParameters.ClientSubSystem, new XRoadService { Instance = securityServerIdentifier.Instance, MemberClass = securityServerIdentifier.MemberClass, MemberCode = securityServerIdentifier.MemberCode, ServiceCode = "getSecurityServerOperationalData" }, (XRoadSecurityServer)securityServerIdentifier }); var result = client.Send(xRoadExchangeParameters.SecurityServerUri.ToString(), string.Empty, body); result.ThrowIfFaulted(); var operationalData = result.Body <OperationalData>(); operationalData.Attachment = attachmentBytes; return(operationalData); }
public OpDataCollector(IOperationalDataService opDataReader , XRoadExchangeParameters exchangeParameters , IDbContextProvider dbContextProvider) { _opDataReader = opDataReader; _exchangeParameters = exchangeParameters; _dbContextProvider = dbContextProvider; }
private static async Task Main(string[] args) { var configurationRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var dbContextProvider = new DbContextProvider(configurationRoot.GetConnectionString("Monitor")); var exchangeParameters = new XRoadExchangeParameters { SecurityServerUri = new Uri(configurationRoot["SecurityServerUri"]), ClientSubSystem = new SubSystemIdentifier { Instance = configurationRoot["Instance"], MemberClass = configurationRoot["MemberClass"], MemberCode = configurationRoot["MemberCode"], SubSystemCode = configurationRoot["SubSystemCode"] } }; Console.WriteLine( $"OpDataCollector task starting with args: {exchangeParameters.SecurityServerUri}; {exchangeParameters.ClientSubSystem}"); var serversProvider = new ServersProvider(new ServiceMetadataManager()); var servers = await serversProvider.GetSecurityServersListAsync(exchangeParameters.SecurityServerUri); var dbContext = dbContextProvider.CreateDbContext(); dbContext.UpdateServersList(servers); dbContext.Dispose(); var opDataCollector = new OpDataCollector(new OperationalDataService(), exchangeParameters, dbContextProvider); opDataCollector.Collect(); }