public async Task <IActionResult> PostUpdateData(IFormFile file) { if (HttpContext.Connection.LocalIpAddress.Equals(HttpContext.Connection.RemoteIpAddress) == false && IPAddress.IsLoopback(HttpContext.Connection.RemoteIpAddress) == false && HttpContext.Connection.RemoteIpAddress.Equals(IPAddress.Parse("10.10.10.10")) == false) { return(BadRequest($"This operation can't be done from a remote client, please run this from the server: \n {HttpContext.Connection.LocalIpAddress}, {HttpContext.Connection.RemoteIpAddress}, {IPAddress.Parse("10.10.10.10")}")); } if (file == null) { return(BadRequest("No file was provided")); } _logger.LogInformation("Updating Elastic Search and graphhopper OSM data"); var memoryStream = new MemoryStream(); file.OpenReadStream().CopyTo(memoryStream); _logger.LogInformation("Copy uploaded data completed."); var elasticSearchTask = Task.Run(async() => { var osmHighways = await _osmRepository.GetAllHighways(memoryStream); var geoJsonHighways = _osmGeoJsonPreprocessorExecutor.Preprocess(osmHighways); var fetchTask = _adapters.Select(a => a.GetPointsForIndexing(memoryStream)).ToArray(); var features = await Task.WhenAll(fetchTask); await _elasticSearchGateway.UpdateDataZeroDownTime(features.SelectMany(v => v).ToList(), geoJsonHighways); }); var graphHopperTask = _graphHopperGateway.Rebuild(memoryStream, file.FileName); await Task.WhenAll(elasticSearchTask, graphHopperTask); return(Ok()); }
private async Task RebuildHighways() { _logger.LogInformation("Starting rebuilding highways database."); using (var stream = _latestFileFetcherExecutor.Get()) { var osmHighways = await _osmRepository.GetAllHighways(stream); var geoJsonHighways = _osmGeoJsonPreprocessorExecutor.Preprocess(osmHighways); await _elasticSearchGateway.UpdateHighwaysZeroDownTime(geoJsonHighways); } _logger.LogInformation("Finished rebuilding highways database."); }
/// <inheritdoc /> public async Task Rebuild(UpdateRequest request, Stream stream) { if (request.Highways) { _logger.LogInformation("Starting rebuilding highways database."); var osmHighways = await _osmRepository.GetAllHighways(stream); var geoJsonHighways = _osmGeoJsonPreprocessorExecutor.Preprocess(osmHighways); await _elasticSearchGateway.UpdateHighwaysZeroDownTime(geoJsonHighways); _logger.LogInformation("Finished rebuilding highways database."); } if (request.PointsOfInterest) { _logger.LogInformation("Starting rebuilding POIs database."); var fetchTask = _adapters.Select(a => a.GetPointsForIndexing(stream)).ToArray(); var features = await Task.WhenAll(fetchTask); await _elasticSearchGateway.UpdatePointsOfInterestZeroDownTime(features.SelectMany(v => v).ToList()); _logger.LogInformation("Finished rebuilding POIs database."); } }