using System.Text.Json; using System.Text.RegularExpressions; namespace SilverLabs.Website.Services; public class DeveloperTicketParsingService { private readonly HttpClient _httpClient; private readonly ILogger _logger; public DeveloperTicketParsingService(HttpClient httpClient, ILogger logger) { _httpClient = httpClient; _logger = logger; } public async Task FetchTicketAsync(string ticketId) { try { var response = await _httpClient.GetAsync($"/api/tickets/{ticketId}"); if (!response.IsSuccessStatusCode) { _logger.LogError("Failed to fetch ticket {TicketId}: {Status}", ticketId, response.StatusCode); return null; } var json = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize(json); } catch (Exception ex) { _logger.LogError(ex, "Error fetching ticket {TicketId}", ticketId); return null; } } public (string? FullName, string? Email, string? DesiredUsername) ParseApplicationFromDescription(string description) { var fullName = ExtractField(description, @"\*\*Full Name:\*\*\s*(.+)"); var email = ExtractField(description, @"\*\*Email:\*\*\s*(.+)"); var desiredUsername = ExtractField(description, @"\*\*Desired Username:\*\*\s*(.+)"); return (fullName, email, desiredUsername); } private static string? ExtractField(string text, string pattern) { var match = Regex.Match(text, pattern); return match.Success ? match.Groups[1].Value.Trim() : null; } }