/// <inheritdoc />
        public async Task <AuditBlob[]> GetUnprocessedAudits(ScannerContainer container)
        {
            var uri    = new Uri($"{this.config.AzureBlob.BasePath}/{container.Name}?{this.config.AzureBlob.Sas}");
            var client = new Azure.Storage.Blobs.BlobContainerClient(uri);

            var blobs = new List <AuditBlob>();

            await foreach (var blob in client.GetBlobsAsync(BlobTraits.Metadata))
            {
                // skip all not metadata file.
                if (!blob.Name.EndsWith("meta"))
                {
                    continue;
                }

                if (blob.Metadata == null || !blob.Metadata.ContainsKey(ProcessedMetadataKey))
                {
                    blobs.Add(new AuditBlob
                    {
                        Name            = blob.Name,
                        ParentContainer = container,
                    });
                }
            }

            return(blobs.ToArray());
        }
        /// <summary>
        /// The method returns all audit files in the container.
        /// </summary>
        /// <param name="container">The container with audits.</param>
        /// <returns>Array of Audit blobs.</returns>
        public async Task MarkAllAuditsAsUnprocessed(ScannerContainer container)
        {
            var uri    = new Uri($"{this.config.AzureBlob.BasePath}/{container.Name}?{this.config.AzureBlob.Sas}");
            var client = new Azure.Storage.Blobs.BlobContainerClient(uri);

            await foreach (var blob in client.GetBlobsAsync())
            {
                // skip all not metadata file.
                if (!blob.Name.EndsWith("meta"))
                {
                    continue;
                }

                await client.GetBlobClient(blob.Name).SetMetadataAsync(new Dictionary <string, string>());
            }
        }