From a304c24b32c0327436bbd8c2853e60668e161b42 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 29 Dec 2025 00:41:52 +0100 Subject: Rename a lot of stuff, add Santiago real time --- .../Controllers/TrafficDataController.cs | 110 --------------------- 1 file changed, 110 deletions(-) delete mode 100644 src/Costasdev.Busurbano.Backend/Controllers/TrafficDataController.cs (limited to 'src/Costasdev.Busurbano.Backend/Controllers/TrafficDataController.cs') diff --git a/src/Costasdev.Busurbano.Backend/Controllers/TrafficDataController.cs b/src/Costasdev.Busurbano.Backend/Controllers/TrafficDataController.cs deleted file mode 100644 index 0542054..0000000 --- a/src/Costasdev.Busurbano.Backend/Controllers/TrafficDataController.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System.Globalization; -using System.Text; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Caching.Memory; -using NetTopologySuite.Features; -using NetTopologySuite.IO; - -namespace Costasdev.Busurbano.Backend.Controllers; - -[ApiController] -[Route("api")] -public class TrafficDataController : ControllerBase -{ - private readonly ILogger _logger; - private readonly IMemoryCache _cache; - private readonly HttpClient _httpClient; - - public TrafficDataController( - ILogger logger, - IMemoryCache cache, - HttpClient httpClient - ) - { - _logger = logger; - _cache = cache; - _httpClient = httpClient; - } - - [HttpGet("traffic")] - public async Task Get() - { - var trafficData = _cache.GetOrCreate("vigo-traffic-geojson", entry => - { - var data = GetTrafficData(); - - entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5); - - return data.Result; - }); - - if (string.IsNullOrEmpty(trafficData)) - { - return StatusCode(404); - } - - return Content(trafficData, "application/json", Encoding.UTF8); - } - - private async Task GetTrafficData() - { - var resp = await _httpClient.GetAsync("https://datos.vigo.org/data/trafico/treal.geojson"); - var body = resp.Content.ReadAsStringAsync().Result; - - var reader = new GeoJsonReader(); - var featureCollection = reader.Read(body); - - var filteredFeatures = new FeatureCollection(); - foreach (var kvp in featureCollection) - { - var newAttributes = new AttributesTable(); - - if ( - !kvp.Attributes.Exists("actualizacion") || - !kvp.Attributes.Exists("style") - ) - { - continue; - } - - var updateParsed = DateTime.TryParseExact( - kvp.Attributes["actualizacion"].ToString(), - "dd/MM/yyyy H:mm:ss", - null, - DateTimeStyles.None, - out var updatedAt - ); - - if (!updateParsed || updatedAt < DateTime.Today) - { - continue; - } - - var style = kvp.Attributes["style"].ToString(); - - if (style == "#SINDATOS") - { - continue; - } - - var vehiculosAttribute = (kvp.Attributes["vehiculos"] ?? "0").ToString(); - - var vehiclesParsed = int.TryParse(vehiculosAttribute, out var vehicles); - if (!vehiclesParsed || vehicles <= 0) - { - continue; - } - - newAttributes.Add("updatedAt", updatedAt.ToString("O")); - newAttributes.Add("style", style); - newAttributes.Add("vehicles", vehicles); - - kvp.Attributes = newAttributes; - filteredFeatures.Add(kvp); - } - - var writer = new GeoJsonWriter(); - - return writer.Write(filteredFeatures); - } -} -- cgit v1.3