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")); }
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()); }