Esempio n. 1
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
            HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            // Get Config info
            var config = new ConfigurationBuilder()
                         .SetBasePath(Environment.CurrentDirectory)
                         .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                         .AddEnvironmentVariables()
                         .Build();
            string connectionString = config["BlobStorageConnection"] ??
                                      config["Values:BlobStorageConnection"];

            // Get request body, parse json to get paths to blob files
            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            string uriDet    = data?.det;
            string uriMaster = data?.master;
            int    headerRow = data?.headerRow;
            string masterBlobContainerName = data?.masterBlobContainerName;
            string masterBlobPath          = data?.masterBlobPath;

            log.LogInformation($"det: {uriDet}, master: {uriMaster}");
            log.LogInformation($"headerRow: {headerRow}");
            log.LogInformation($"masterBlobContainerName: {masterBlobContainerName}");
            log.LogInformation($"masterBlobPath: {masterBlobPath}");

            // Get blobs as MemoryStream
            BlobExtractor blobLoader = new BlobExtractor(connectionString);
            MemoryStream  detStream  =
                await blobLoader.ExtractBlobAsync(uriDet);

            MemoryStream masterStream =
                await blobLoader.ExtractBlobAsync(uriMaster);

            BlobTransformer merger      = new BlobTransformer();
            MemoryStream    updatedBlob = merger.MergeBlobs(
                detStream, masterStream, 6);

            BlobLoader uploader  = new BlobLoader(connectionString);
            bool       isSuccess = await uploader.LoadBlobAsync(
                updatedBlob, masterBlobContainerName, masterBlobPath);

            return(isSuccess
                ? (ActionResult) new OkObjectResult("Master template updated")
                : new BadRequestObjectResult("Something bad happened"));
        }
Esempio n. 2
0
        private static Blob FillHoles(bool[,] map)
        {
            BlobExtractor extractor = new BlobExtractor(map);

            foreach (Blob b in extractor.Blobs.Skip(1))
            {
                foreach (Pixel p in b.Pixels)
                {
                    map[p.X, p.Y] = true;
                }
            }

            return(extractor.Blobs.First());
        }