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."));
        }
Beispiel #2
0
        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);
            }
        }