public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, [Queue("bounding-box-downloadrequests")] CloudQueue messages, ILogger log ) { log.LogInformation($"{nameof(LoadBoundingBoxesIntoRegion)} processed a {req.Method} request {req.QueryString}"); var query = req.GetQueryParameterDictionary(); BoundingBox originalBoundingBox; try { originalBoundingBox = GetOriginalBoundingBox(query); } catch (ArgumentException ex) { return(new BadRequestObjectResult($"Bad request: {ex.Message}")); } var bboxes = new BuildBoundingBoxes(kmSize).GetBoundingBoxes(originalBoundingBox).ToList(); foreach (var bbox in bboxes) { await messages.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(bbox))); } return((ActionResult) new OkObjectResult($"Added {bboxes.Count} to the queue.")); }
public void Run(BoundingBox bbox) { var boxes = new BuildBoundingBoxes(_kmSize).GetBoundingBoxes(bbox).ToList(); var first = true; foreach (var box in boxes) { if (!first) { // do one pull every four minutes. Thread.Sleep(1000 * 60 * 4); } first = false; var geometry = RunSingleSquare(box); SaveGeometry(geometry, box); } }