From e7526241d1db7b9efdd65c36ddd7cf5c2ff1e0b4 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Sun, 12 Oct 2025 20:13:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BB=D0=BE=D0=B3=D0=B3=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SfeduSchedule/GlobalVariables.cs | 2 +- SfeduSchedule/Services/ModeusService.cs | 44 ++++++++++++++++--------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/SfeduSchedule/GlobalVariables.cs b/SfeduSchedule/GlobalVariables.cs index 101ef29..2530ea4 100644 --- a/SfeduSchedule/GlobalVariables.cs +++ b/SfeduSchedule/GlobalVariables.cs @@ -5,6 +5,6 @@ namespace SfeduSchedule public static class GlobalVariables { public static string JwtFilePath { get; set; } = "data/jwt.txt"; - public static readonly JsonSerializerOptions jsonSerializerOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; + public static readonly JsonSerializerOptions jsonSerializerOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; } } \ No newline at end of file diff --git a/SfeduSchedule/Services/ModeusService.cs b/SfeduSchedule/Services/ModeusService.cs index c159da6..c9ddef0 100644 --- a/SfeduSchedule/Services/ModeusService.cs +++ b/SfeduSchedule/Services/ModeusService.cs @@ -31,7 +31,11 @@ namespace SfeduSchedule.Services System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.SendAsync(request); _logger.LogInformation("GetScheduleAsync: Ответ получен: {StatusCode}", response.StatusCode); - response.EnsureSuccessStatusCode(); + if (response.StatusCode != System.Net.HttpStatusCode.OK) + { + _logger.LogError("GetScheduleAsync: Ошибка при получении списка студентов: {StatusCode}", response.StatusCode); + return null; + } return await response.Content.ReadAsStringAsync(); } @@ -43,7 +47,11 @@ namespace SfeduSchedule.Services System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.SendAsync(request); _logger.LogInformation("SearchRoomsAsync: Ответ получен: {StatusCode}", response.StatusCode); - response.EnsureSuccessStatusCode(); + if (response.StatusCode != System.Net.HttpStatusCode.OK) + { + _logger.LogError("SearchRoomsAsync: Ошибка при получении списка студентов: {StatusCode}", response.StatusCode); + return null; + } return await response.Content.ReadAsStringAsync(); } @@ -60,7 +68,11 @@ namespace SfeduSchedule.Services var response = await _httpClient.SendAsync(request); _logger.LogInformation("GetGuidAsync: Ответ получен: {StatusCode}", response.StatusCode); - response.EnsureSuccessStatusCode(); + if (response.StatusCode != System.Net.HttpStatusCode.OK) + { + _logger.LogError("GetGuidAsync: Ошибка при получении списка студентов: {StatusCode}", response.StatusCode); + return null; + } var json = await response.Content.ReadAsStringAsync(); @@ -89,8 +101,8 @@ namespace SfeduSchedule.Services var schedule = await GetScheduleAsync(msr); if (schedule == null) { - _logger.LogError("GetScheduleJsonAsync: Schedule is null. Request: {@msr}", msr); - throw new Exception("Schedule is null"); // Недопустимое состояние + _logger.LogError("GetScheduleJsonAsync: Schedule is null. Request: " + JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); + return null; } Schedule? scheduleJson; @@ -101,23 +113,23 @@ namespace SfeduSchedule.Services { case null: _logger.LogError( - "GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {@msr}", - schedule, msr); + "GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {msr}", + schedule, JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); break; case { Embedded: null }: _logger.LogError( - "GetScheduleJsonAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {@msr}", - scheduleJson, msr); + "GetScheduleJsonAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {msr}", + scheduleJson, JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); break; case { Embedded.Events: null }: _logger.LogError( - "GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {@msr}", - scheduleJson.Embedded, msr); + "GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {msr}", + scheduleJson.Embedded, JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); break; case { Embedded.Events.Length: 0 }: _logger.LogWarning( - "GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {@msr}", - scheduleJson.Embedded, msr); + "GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {msr}", + scheduleJson.Embedded, JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); break; default: return scheduleJson; @@ -126,8 +138,8 @@ namespace SfeduSchedule.Services catch (Exception ex) { _logger.LogError(ex, - "GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {@msr}", schedule, - msr); + "GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {msr}", schedule, + JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); } return null; @@ -138,7 +150,7 @@ namespace SfeduSchedule.Services Schedule? scheduleJson = await GetScheduleJsonAsync(msr); if (scheduleJson == null) { - _logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: {@msr}", msr); + _logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: " + JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions)); return null; }