// Creates container and blobs within a storage account to populate changefeed and add example events
        static void Main(string[] args)
        {
            count = 0;
            // Create clients
            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

            try
            {
                BlobContainerClient blobContainerClient = blobServiceClient.CreateBlobContainer(containerName);
            }
            catch
            {
                BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
            }

            // Create Timer
            Timer timer = null;

            Console.WriteLine("Press Space to start the timer. Press Enter to stop the timer. Press any other key to exit/not run the timer");
            if (Console.ReadKey().Key == ConsoleKey.Spacebar)
            {
                Console.WriteLine("Starting timer...");
                // Timer calls CreateEvents function every 30 minutes, to edit the interval change the last value in the call to the number of milliseconds
                timer = new Timer(new TimerCallback(CreateEvents), null, 0, 1800000);
                while (Console.ReadKey().Key != ConsoleKey.Enter)
                {
                    if (Console.ReadKey().Key == ConsoleKey.Enter)
                    {
                        Console.WriteLine("Stopping timer...");
                        timer.Change(
                            Timeout.Infinite,
                            Timeout.Infinite);
                        break;
                    }
                }
                Console.WriteLine("Timer Stopped");
            }
            else
            {
                Console.WriteLine("\nTimer was not run, program exited");
            }
        }
Esempio n. 2
0
    public async Task Step3_attempt_to_upload_a_new_version_of_blob_using_stream_workaround_that_works()
    {
        // Download the blob
        var serviceClient   = new BlobServiceClient(connectionString);
        var containerClient = serviceClient.GetBlobContainerClient("repro");
        var blobClient      = containerClient.GetBlobClient("aabbccdd-1122-3344-5566-778899aabbcc.txt");

        var response = await blobClient.DownloadAsync();

        // upload to the destination - first two characters and then the original blob
        var uploadClient = containerClient.GetBlobClient("aa/aabbccdd-1122-3344-5566-778899aabbcc.txt");

        // The code set the LocalId in case this is an insert and verifies the blob tag value is lesser value in case it's an update
        var options = new BlobUploadOptions
        {
            Tags = new Dictionary <string, string> {
                { "LocalId", "456" }
            },
            Conditions = new BlobRequestConditions
            {
                TagConditions = $@"""LocalId"" < '456'"
            }
        };

        // Workaround for https://github.com/Azure/azure-sdk-for-net/issues/20931
        await using var memoryStreamFix = new MemoryStream();
        await response.Value.Content.CopyToAsync(memoryStreamFix).ConfigureAwait(false);

        memoryStreamFix.Position = 0;
        // End Workaround

        try
        {
            await uploadClient.UploadAsync(memoryStreamFix, options);
        }
        catch (RequestFailedException exception) when(exception.ErrorCode == BlobErrorCode.ConditionNotMet)
        {
            output.WriteLine("Failed to copy 'repo/aa/aabbccdd-1122-3344-5566-778899aabbcc.txt' to 'repo/aa/aabbccdd-1122-3344-5566-778899aabbcc.txt' despite workaround.");
            output.WriteLine("Reason: 'repo/aa/aabbccdd-1122-3344-5566-778899aabbcc.txt' reported as existing and condition not met (412) despite 'repo/aa/aabbccdd-1122-3344-5566-778899aabbcc.txt' absense.");
            output.WriteLine($"Exception: {exception.Message}");
        }
    }
        public async Task <IActionResult> GetAlerts(int id)
        {
            var currentUser = CurrentUser();

            var organization = _context.Organizations.Find(id);

            // Ensure that object was found.
            if (organization == null)
            {
                return(NotFound());
            }

            // Ensure that user is authorized.
            if (!currentUser.CanViewPunches ||
                currentUser.OrganizationId != id)
            {
                return(BadRequest());
            }

            try
            {
                // Download and deserialize the json.
                var azureConnectionString             = _configuration["AlertsAzureStorageConnectionString"];
                BlobServiceClient   blobServiceClient = new BlobServiceClient(azureConnectionString);
                BlobContainerClient containerClient   = blobServiceClient.GetBlobContainerClient("alerts");
                BlobClient          blobClient        = containerClient.GetBlobClient($"{organization.Id}.json");

                List <Alert> result;

                using (var stream = await blobClient.OpenReadAsync())
                {
                    result = JsonSerializer.Deserialize <List <Alert> >(stream);
                }

                return(Ok(result));
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 4
0
        public async Task AppendBlobSample()
        {
            // Instantiate a new BlobServiceClient using a connection string.
            BlobServiceClient blobServiceClient = new BlobServiceClient(TestConfigurations.DefaultTargetTenant.ConnectionString);

            // Instantiate a new BlobContainerClient
            BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient("mycontainer4");

            try
            {
                // Create new Container in the Service
                await blobContainerClient.CreateAsync();

                // Instantiate a new PageBlobClient
                AppendBlobClient appendBlobClient = blobContainerClient.GetAppendBlobClient("appendblob");

                // Create PageBlob in the Service
                await appendBlobClient.CreateAsync();

                // Append content to AppendBlob
                using (FileStream fileStream = File.OpenRead("Samples/SampleSource.txt"))
                {
                    await appendBlobClient.AppendBlockAsync(fileStream);
                }

                // Download PageBlob
                using (FileStream fileStream = File.Create("AppendDestination.txt"))
                {
                    Response <BlobDownloadInfo> downloadResponse = await appendBlobClient.DownloadAsync();

                    await downloadResponse.Value.Content.CopyToAsync(fileStream);
                }

                // Delete PageBlob in the Service
                await appendBlobClient.DeleteAsync();
            }
            finally
            {
                // Delete Container in the Service
                await blobContainerClient.DeleteAsync();
            }
        }
        public void FineGrainedBatching()
        {
            string connectionString = ConnectionString;
            string containerName    = Randomize("sample-container");

            #region Snippet:SampleSnippetsBatch_FineGrainedBatching
            // Get a connection string to our Azure Storage account.
            //@@ string connectionString = "<connection_string>";
            //@@ string containerName = "sample-container";

            // Get a reference to a container named "sample-container" and then create it
            BlobServiceClient   service   = new BlobServiceClient(connectionString);
            BlobContainerClient container = service.GetBlobContainerClient(containerName);
            container.Create();

            // Create three blobs named "foo", "bar", and "baz"
            BlobClient foo = container.GetBlobClient("foo");
            BlobClient bar = container.GetBlobClient("bar");
            BlobClient baz = container.GetBlobClient("baz");
            foo.Upload(BinaryData.FromString("Foo!"));
            foo.CreateSnapshot();
            bar.Upload(BinaryData.FromString("Bar!"));
            bar.CreateSnapshot();
            baz.Upload(BinaryData.FromString("Baz!"));

            // Create a batch with three deletes
            BlobBatchClient batchClient = service.GetBlobBatchClient();
            BlobBatch       batch       = batchClient.CreateBatch();
            batch.DeleteBlob(foo.Uri, DeleteSnapshotsOption.IncludeSnapshots);
            batch.DeleteBlob(bar.Uri, DeleteSnapshotsOption.OnlySnapshots);
            batch.DeleteBlob(baz.Uri);

            // Submit the batch
            batchClient.SubmitBatch(batch);
            #endregion

            Pageable <BlobItem> blobs = container.GetBlobs(states: BlobStates.Snapshots);
            Assert.AreEqual(1, blobs.Count());
            Assert.AreEqual("bar", blobs.FirstOrDefault().Name);
            // Clean up after the test when we're finished
            container.Delete();
        }
Esempio n. 6
0
        private async Task <Stream> GetFileStream(string blobKey)
        {
            var blobServiceClient = new BlobServiceClient(_options.StorageConnectionString);
            var containerClient   = blobServiceClient.GetBlobContainerClient(_options.StorageContainerName);

            await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob);

            var blobClient = containerClient.GetBlobClient(blobKey);

            if (blobClient.Exists())
            {
                var stream = new MemoryStream();
                await blobClient.DownloadToAsync(stream);

                stream.Seek(0, SeekOrigin.Begin);
                return(stream);
            }

            return(new MemoryStream());
        }
Esempio n. 7
0
            /// <summary>
            /// Initializes the Azure storage container and creates it if it doesn't exist.
            /// </summary>
            /// <param name="containerName">Name of the container.</param>
            private async Task <BlobContainerClient> InitializeContainer(string containerName, CancellationToken cancellationToken)
            {
                if (_client == null)
                {
                    throw new InvalidOperationException("CloudBlobClient has not been initialized");
                }

                var container = _client.GetBlobContainerClient(containerName);

                var containerExists = await container.ExistsAsync(cancellationToken).ConfigureAwait(false);

                if (containerExists)
                {
                    return(container);
                }

                await container.CreateIfNotExistsAsync(Azure.Storage.Blobs.Models.PublicAccessType.None, null, cancellationToken).ConfigureAwait(false);

                return(container);
            }
Esempio n. 8
0
        /// <summary>
        /// Saves data in blob storage defined in configuration.
        /// </summary>
        /// <param name="config">Configuration.</param>
        /// <param name="name">Blob name.</param>
        /// <param name="data">Blob data.</param>
        public static async Task SaveBlob(IConfiguration config, string name, string data)
        {
            BlobClient client;

            StorageSharedKeyCredential storageCredentials  = new StorageSharedKeyCredential(config["AccountName"], config["AccountKey"]);
            BlobServiceClient          serviceClient       = new BlobServiceClient(new Uri(config["BlobEndPoint"]), storageCredentials);
            BlobContainerClient        blobContainerClient = serviceClient.GetBlobContainerClient(config["StorageContainer"]);

            client = blobContainerClient.GetBlobClient(name);

            Stream       stream = new MemoryStream();
            StreamWriter writer = new StreamWriter(stream);

            writer.Write(data);
            writer.Flush();
            stream.Position = 0;
            await client.UploadAsync(stream, true);

            stream.Dispose();
        }
Esempio n. 9
0
        public void TestSendStreamToStorage(Action setupFunction, string firstFile)
        {
            try
            {
                setupFunction();

                Telegraph.Instance.Ask((System.IO.Stream)System.IO.File.OpenRead(firstFile)).Wait();

                var acct      = new BlobServiceClient(Connections.StorageConnectionString);
                var container = acct.GetBlobContainerClient(StorageContainerName);
                var blob      = container.GetBlobClient(System.IO.Path.GetFileName(firstFile));

                Assert.IsTrue(blob.Exists());
                blob.Delete();
            }
            finally
            {
                Telegraph.Instance.UnRegisterAll();
            }
        }
Esempio n. 10
0
        private List <Models.EmailMetrics> ProcessBlobFiles()
        {
            var emailMetrics = new List <Models.EmailMetrics>();

            // connect to the storage account
            _storageAccount   = new BlobServiceClient(ConfigurationManager.AppSettings["arm:AzureStorageConnectionString"]);
            _storageContainer = _storageAccount.GetBlobContainerClient("mgdccontainer");

            // get a list of all emails
            var blobResults = _storageContainer.GetBlobs();

            // process each email
            foreach (Azure.Storage.Blobs.Models.BlobItem blob in blobResults)
            {
                BlobClient blobClient = _storageContainer.GetBlobClient(blob.Name);
                ProcessBlobEmails(emailMetrics, blobClient);
            }
            // emailMetrics.Sort((p1, p2) => p1.RecipientsToEmail.CompareTo(p2.RecipientsToEmail));
            return(emailMetrics);
        }
        public HomeController()
        {
            if (!containerCreated)
            {
                string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"].ToString();

                // Create a client to interact with blob service.
                BlobServiceClient client = new BlobServiceClient(connectionString);

                // Create a container named "webappstoragedotnet-imagecontainer" in this storage account first if you want interact with truly Azure service.
                blobContainer = client.GetBlobContainerClient(BlobContainerName);
                blobContainer.CreateIfNotExists();

                // To view the uploaded blob in a browser, you have two options. The first option is to use a Shared Access Signature (SAS) token to delegate
                // access to the resource. The second approach is to set permissions to allow public access to blobs in this container.Then you can view the image.
                blobContainer.SetAccessPolicy(PublicAccessType.Blob);

                containerCreated = true;
            }
        }
        public JobApplicationsController(HRPotterContext context, BlobServiceClient blobService)
        {
            _context            = context;
            blobContainerClient = blobService.GetBlobContainerClient("job-applications");
            s3Client            = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);

            var storageService = Environment.GetEnvironmentVariable("StorageService");

            if (storageService == "S3")
            {
                storageType = StorageType.S3;
            }
            else
            {
                // By default use BlobStorage
                storageType = StorageType.BlobStorage;
            }

            bucketName = Environment.GetEnvironmentVariable("BucketName");
        }
        public async Task RenameBlobContainerAsync()
        {
            // Arrange
            BlobServiceClient   service          = GetServiceClient_SharedKey();
            string              oldContainerName = GetNewContainerName();
            string              newContainerName = GetNewContainerName();
            BlobContainerClient container        = InstrumentClient(service.GetBlobContainerClient(oldContainerName));
            await container.CreateAsync();

            // Act
            BlobContainerClient newContainer = await service.RenameBlobContainerAsync(
                sourceContainerName : oldContainerName,
                destinationContainerName : newContainerName);

            // Assert
            await newContainer.GetPropertiesAsync();

            // Cleanup
            await newContainer.DeleteAsync();
        }
Esempio n. 14
0
        public async Task <bool> WriteStreamAsBlobToStorageAsync(Stream content, string containerName, string filename)
        {
            var connectionString = Environment.GetEnvironmentVariable("FileStorAcc");
            var blobClient       = new BlobServiceClient(connectionString);

            var containerClient = blobClient.GetBlobContainerClient(containerName);

            await containerClient.CreateIfNotExistsAsync();

            // Get a reference to a blob
            var blob = containerClient.GetBlobClient(filename);

            // Open the file and upload its data

            await blob.UploadAsync(content, true);

            content.Close();

            return(true);
        }
        public SalaryCsvBlobService(IConfiguration configuration, ILogger <SalaryCsvBlobService> logger)
        {
            _logger = logger;

            if (string.IsNullOrWhiteSpace(configuration["AzureStorageConnectionString"]))
            {
                throw new ArgumentException("Azure Storage connection string is null");
            }

            if (string.IsNullOrWhiteSpace(configuration["SalaryCsvContainer"]))
            {
                throw new ArgumentException("Salary CSV Container Name is null");
            }

            _logger.LogInformation("Instantiating service client...");
            var blobServiceClient = new BlobServiceClient(configuration["AzureStorageConnectionString"]);

            _blobContainerClient = blobServiceClient.GetBlobContainerClient(configuration["SalaryCsvContainer"]);
            _logger.LogInformation("Service client successfully instantiated!");
        }
Esempio n. 16
0
        public async Task <IActionResult> LinkPage()
        {
            // Create a BlobServiceClient object which will be used to create a container client
            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

            // Create the container and return a container client object
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

            BlobLists blobLists = new BlobLists();

            blobLists.Links = new List <string>();
            // List all blobs in the container
            await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
            {
                blobLists.Links.Add(blobItem.Name);
            }
            ViewData["id"] = "result" + Globals.ContainerName + ".txt";

            return(View(blobLists));
        }
Esempio n. 17
0
        public async Task <long> GetBanFileSizeForGame(GameType gameType)
        {
            var blobKey = $"{gameType}-bans.txt";

            _logger.LogInformation($"Retrieving ban file size for {gameType} using blob key {blobKey}");

            var blobServiceClient = new BlobServiceClient(_options.StorageConnectionString);
            var containerClient   = blobServiceClient.GetBlobContainerClient(_options.StorageContainerName);

            await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob);

            var blobClient = containerClient.GetBlobClient(blobKey);

            if (blobClient.Exists())
            {
                return((await blobClient.GetPropertiesAsync()).Value.ContentLength);
            }

            return(0);
        }
Esempio n. 18
0
        private BlobContainerClient GetContainerClient(params string[] path)
        {
            if (path.Length < 2)
            {
                throw new Exception($"Path is not complete, it needs to consist of at least 2 parts, but only has {path.Length}.");
            }

            var blobServiceClient = new BlobServiceClient(_configuration.AzureStorageConnectionString);

            var container = path.First();

            var client = blobServiceClient.GetBlobContainerClient(container);

            if (_configuration.AutomaticallyCreateDirectories && !client.Exists())
            {
                client.Create();
            }

            return(client);
        }
Esempio n. 19
0
        public static async Task Main()
        {
            BlobClientOptions options = new BlobClientOptions();

            options.Retry.MaxRetries             = 10;
            options.Retry.Delay                  = TimeSpan.FromSeconds(3);
            options.Diagnostics.IsLoggingEnabled = true;


            options.AddPolicy(new SimpleTracingPolicy(), HttpPipelinePosition.PerCall);


            BlobServiceClient serviceClient = new BlobServiceClient(BlobServiceUri, new DefaultAzureCredential(), options);

            await foreach (ContainerItem container in serviceClient.GetContainersAsync())
            {
                BlobContainerClient containerClient = serviceClient.GetBlobContainerClient(container.Name);
                await containerClient.DeleteAsync();
            }
        }
Esempio n. 20
0
        public IActionResult Index()
        {
            //This for Azure App Configuration
            //BlobServiceClient blobServiceClient = new BlobServiceClient(_configuration["TestApp:Settings:StgConnString"]);
            //BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_configuration["TestApp:Settings:StgContainerName"]);
            //This for Azure Key Vault
            BlobServiceClient   blobServiceClient = new BlobServiceClient(_configuration["DemoStoreConnectionString"]);
            BlobContainerClient containerClient   = blobServiceClient.GetBlobContainerClient(_configuration["DemoStoreContainerName"]);
            BlobList            blobList          = new BlobList();

            blobList.AccountName   = containerClient.Uri.ToString();
            blobList.ContainerName = containerClient.Name.ToString();
            blobList.Blobs         = new List <string>();
            foreach (var blob in containerClient.GetBlobs())
            {
                blobList.Blobs.Add(blob.Name);
            }
            ViewData["blobs"] = blobList;
            return(View());
        }
Esempio n. 21
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string  requestBody    = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data           = JsonConvert.DeserializeObject(requestBody);
            string  storageAccount = data.storageAccount;
            string  container      = data.container;
            string  folderPath     = data.folderPath; // with no leading slash

            var uri             = $"https://{storageAccount}.blob.core.windows.net/";
            var serviceClient   = new BlobServiceClient(new Uri(uri), new DefaultAzureCredential());
            var containerClient = serviceClient.GetBlobContainerClient(container);

            var files = new List <BlobFilePath>();

            await GetFiles(containerClient, folderPath, files);

            return(new OkObjectResult("{\"childItems\":" + JsonConvert.SerializeObject(files) + "}"));
        }
Esempio n. 22
0
        public async Task Execute(FileRequest request)
        {
            _validator.ValidateAndThrow(request);
            var containerClient = _blobServiceClient.GetBlobContainerClient("code");

            // Clearing the metadata field
            containerClient.SetMetadata(new Dictionary <string, string>());
            if (!File.Exists(request.Path))
            {
                throw new FileNotFoundException("asd");
            }
            var blobClient = containerClient.GetBlobClient(Guid.NewGuid().ToString());
            var metaData   = new Dictionary <string, string>(1);

            metaData.Add("Project", request.ProjectName);
            //blobClient.SetMetadata(metaData);
            await blobClient.UploadAsync(request.Path, new BlobHttpHeaders { ContentType = request.Path.GetContentType() });

            blobClient.SetMetadata(metaData);
        }
        public AzureBlobStorageService(IConfiguration configuration)
        {
            var storageConnectionString = configuration["Azure:Blob:StorageConnectionString"];
            var containerName           = configuration["Azure:Blob:ContainerName"];

            _publicEndpoint = configuration["Azure:Blob:PublicEndpoint"];

            Contract.Requires(string.IsNullOrWhiteSpace(storageConnectionString));
            Contract.Requires(string.IsNullOrWhiteSpace(containerName));


            var blobClient = new BlobServiceClient(storageConnectionString);

            _blobContainer = blobClient.GetBlobContainerClient(containerName);

            if (string.IsNullOrWhiteSpace(_publicEndpoint))
            {
                _publicEndpoint = _blobContainer.Uri.AbsoluteUri;
            }
        }
        public static async Task <List <string> > GetEventPictures(IConfiguration configuration)
        {
            var connectionString = configuration?.GetAzureStorageSettings("ConnectionString");
            var imageContainer   = configuration?.GetAzureStorageSettings("ImageContainer");
            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
            // Create the container and return a container client object
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(imageContainer);

            List <string> eventPictures = new List <string>();

            await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
            {
                if (blobItem.Name.Contains("events", StringComparison.OrdinalIgnoreCase))
                {
                    eventPictures.Add(blobItem.Name);
                }
            }

            return(eventPictures);
        }
Esempio n. 25
0
        public async Task <List <BlobClient> > BlobGetterAsync(string containerName)
        {
            string connectionString = Environment.GetEnvironmentVariable("BlobEndPoint");

            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

            var containerClient = blobServiceClient.GetBlobContainerClient(containerName);

            AsyncPageable <BlobItem> blobs = containerClient.GetBlobsAsync();

            var blobClients = new List <BlobClient>();

            await foreach (var blob in blobs)
            {
                var blobClient = containerClient.GetBlobClient(blob.Name);
                blobClients.Add(blobClient);
            }

            return(blobClients);
        }
Esempio n. 26
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("FunctionKeyVault.displayBlobs function processed a request.");

            BlobServiceClient   blobServiceClient = new BlobServiceClient(Configuration["TestApp:Settings:StgConnString"]);
            BlobContainerClient containerClient   = blobServiceClient.GetBlobContainerClient(Configuration["TestApp:Settings:StgContainerName"]);
            int blobCount = 0;

            foreach (var blob in containerClient.GetBlobs())
            {
                blobCount++;
            }

            string responseMessage = "Found " + blobCount.ToString() + " blobs in storage account " + containerClient.Uri.ToString() +
                                     " in container " + containerClient.Name.ToString();

            return(new OkObjectResult(responseMessage));
        }
        public async Task <DisposingContainer> GetTestContainerAsync(
            BlobServiceClient service             = default,
            string containerName                  = default,
            IDictionary <string, string> metadata = default,
            PublicAccessType?publicAccessType     = default,
            bool premium = default)
        {
            containerName ??= GetNewContainerName();
            service ??= GetServiceClient_SharedKey();

            if (publicAccessType == default)
            {
                publicAccessType = premium ? PublicAccessType.None : PublicAccessType.BlobContainer;
            }

            BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(containerName));
            await container.CreateAsync(metadata : metadata, publicAccessType : publicAccessType.Value);

            return(new DisposingContainer(container));
        }
Esempio n. 28
0
        public async Task <string> Upload(IFormFile file)
        {
            var connectionString = _configuration["StorageAccount:ConnectionString"];

            var containerName = _configuration["StorageContainer:BookCover:Name"];

            var blobServiceClient = new BlobServiceClient(connectionString);

            var containerClient = blobServiceClient.GetBlobContainerClient(containerName);

            var blobName = $"{Guid.NewGuid()}-{file.FileName}";

            var blobClient = containerClient.GetBlobClient(blobName);

            using var stream = file.OpenReadStream();

            await blobClient.UploadAsync(stream);

            return(blobName);
        }
Esempio n. 29
0
        private RequestDelegate EnsureUserIdAndContainer(RequestDelegate next)
        {
            return(async ctx =>
            {
                // Get the UserId from our Cookies or create it and save it for this request
                if (!ctx.Request.Cookies.TryGetValue("UserId", out string userId))
                {
                    userId = Guid.NewGuid().ToString();
                }
                ctx.Items["UserId"] = userId;
                ctx.Response.Cookies.Append("UserId", userId);

                // Create a container for the user if it doesn't already exist
                BlobServiceClient serviceClient = ctx.RequestServices.GetService <BlobServiceClient>();
                await serviceClient.GetBlobContainerClient(userId).CreateIfNotExistsAsync();

                // Continue processing
                await next(ctx);
            });
        }
Esempio n. 30
0
        public async Task <List <ImpactStats> > GetAsync()
        {
            // Get a reference to a blob
            if (blobContainerClient == null)
            {
                // Create a BlobServiceClient object which will be used to create a container client
                BlobServiceClient blobServiceClient = new BlobServiceClient(AzureStorageConfig.AccountKey);
                blobContainerClient = blobServiceClient.GetBlobContainerClient(AzureStorageConfig.ContainerName);
            }
            var blobClient = blobContainerClient.GetBlobClient(statsFileName);
            BlobDownloadInfo blobDownloadInfo = await blobClient.DownloadAsync();

            using (StreamReader reader = new StreamReader(blobDownloadInfo.Content))
            {
                string             text  = reader.ReadToEnd();
                List <ImpactStats> stats = JsonSerializer.Deserialize <List <ImpactStats> >(text);

                return(stats);
            }
        }