Вынес парсер JSON
This commit is contained in:
@@ -68,8 +68,11 @@ builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration)
|
||||
|
||||
// Загружаем плагины (изолированно), даём им зарегистрировать DI и подключаем контроллеры
|
||||
var loaded = PluginLoader.LoadPlugins(pluginsPath);
|
||||
Console.WriteLine("Plugins count: " + loaded.Count);
|
||||
foreach (var p in loaded)
|
||||
{
|
||||
Console.WriteLine("Loading plugin: " + p.Instance.Name);
|
||||
|
||||
// DI из плагина
|
||||
p.Instance.ConfigureServices(builder.Services);
|
||||
|
||||
|
||||
@@ -84,38 +84,61 @@ namespace SfeduSchedule.Services
|
||||
return personId;
|
||||
}
|
||||
|
||||
public async Task<string?> GetIcsAsync(ModeusScheduleRequest msr)
|
||||
public async Task<Schedule?> GetScheduleJsonAsync(ModeusScheduleRequest msr)
|
||||
{
|
||||
var schedule = await GetScheduleAsync(msr);
|
||||
if (schedule == null)
|
||||
{
|
||||
_logger.LogError("GetIcsAsync: Schedule is null. Request: {@msr}", msr);
|
||||
return null;
|
||||
_logger.LogError("GetScheduleJsonAsync: Schedule is null. Request: {@msr}", msr);
|
||||
throw new Exception("Schedule is null"); // Недопустимое состояние
|
||||
}
|
||||
|
||||
Schedule? scheduleJson;
|
||||
try
|
||||
{
|
||||
scheduleJson = Schedule.FromJson(schedule);
|
||||
switch (scheduleJson)
|
||||
{
|
||||
case null:
|
||||
_logger.LogError(
|
||||
"GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {@msr}",
|
||||
schedule, msr);
|
||||
break;
|
||||
case { Embedded: null }:
|
||||
_logger.LogError(
|
||||
"GetScheduleJsonAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {@msr}",
|
||||
scheduleJson, msr);
|
||||
break;
|
||||
case { Embedded.Events: null }:
|
||||
_logger.LogError(
|
||||
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {@msr}",
|
||||
scheduleJson.Embedded, msr);
|
||||
break;
|
||||
case { Embedded.Events.Length: 0 }:
|
||||
_logger.LogWarning(
|
||||
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {@msr}",
|
||||
scheduleJson.Embedded, msr);
|
||||
break;
|
||||
default:
|
||||
return scheduleJson;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "GetIcsAsync: Deserialization failed. Schedule: {Schedule}\n Request: {@msr}", schedule, msr);
|
||||
_logger.LogError(ex,
|
||||
"GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {@msr}", schedule,
|
||||
msr);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (scheduleJson?.Embedded?.Events is not { Length: > 0 } events)
|
||||
public async Task<string?> GetIcsAsync(ModeusScheduleRequest msr)
|
||||
{
|
||||
Schedule? scheduleJson = await GetScheduleJsonAsync(msr);
|
||||
if (scheduleJson == null)
|
||||
_logger.LogError("GetIcsAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {@msr}", schedule, msr);
|
||||
else if (scheduleJson.Embedded == null)
|
||||
_logger.LogError("GetIcsAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {@msr}", scheduleJson, msr);
|
||||
else if (scheduleJson.Embedded.Events == null)
|
||||
_logger.LogError("GetIcsAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {@msr}",
|
||||
scheduleJson.Embedded, msr);
|
||||
else
|
||||
_logger.LogWarning("GetIcsAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {@msr}",
|
||||
scheduleJson.Embedded, msr);
|
||||
{
|
||||
_logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: {@msr}", msr);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user