Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public OpDataCollector(IOperationalDataService opDataReader
                        , XRoadExchangeParameters exchangeParameters
                        , IDbContextProvider dbContextProvider)
 {
     _opDataReader       = opDataReader;
     _exchangeParameters = exchangeParameters;
     _dbContextProvider  = dbContextProvider;
 }
Ejemplo n.º 3
0
        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();
        }