Пример #1
0
        public async Task <List <SecureScore> > ConvertAsync(SecureScoreAttribute input, CancellationToken cancellationToken)
        {
            GraphService       graphService;
            List <SecureScore> secureScore;

            try
            {
                graphService = new GraphService(
                    new Uri(input.Resource),
                    new ServiceCredentials(
                        input.ApplicationId,
                        await vault.GetSecretAsync(options.KeyVaultEndpoint, input.SecretName).ConfigureAwait(false),
                        input.Resource,
                        input.CustomerId));

                secureScore = await graphService.GetSecureScoreAsync(int.Parse(input.Period, CultureInfo.CurrentCulture), cancellationToken).ConfigureAwait(false);

                return(secureScore);
            }
            catch (ServiceClientException ex)
            {
                log.LogError(ex, $"Encountered an error when processing {input.CustomerId}");
                return(null);
            }
            finally
            {
                graphService = null;
            }
        }
        public async Task <List <SecureScore> > ConvertAsync(SecureScoreAttribute input, CancellationToken cancellationToken)
        {
            GraphServiceClient client;
            ISecuritySecureScoresCollectionPage page;
            List <SecureScore> scores;

            try
            {
                client = new GraphServiceClient(
                    new DelegateAuthenticationProvider(async(requestMessage) =>
                {
                    requestMessage
                    .Headers
                    .Authorization = new AuthenticationHeaderValue(
                        "Bearer",
                        await GetTokenAsync(
                            input.ApplicationId,
                            await vault.GetSecretAsync(options.KeyVaultEndpoint, input.SecretName).ConfigureAwait(false),
                            input.Resource,
                            input.CustomerId).ConfigureAwait(false));
                }));

                page = await client.Security.SecureScores.Request().GetAsync().ConfigureAwait(false);

                scores = new List <SecureScore>(page.CurrentPage);

                while (page.NextPageRequest != null)
                {
                    page = await page.NextPageRequest.GetAsync().ConfigureAwait(false);

                    scores.AddRange(page.CurrentPage);
                }

                return(scores);
            }
            catch (ServiceClientException ex)
            {
                log.LogError(ex, $"Encountered an error when processing {input.CustomerId}");
                return(null);
            }
        }