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