Перенёс Abstractions в другой namespace и небольшие улучшения
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| namespace SfeduSchedule.Plugin.Abstractions; | ||||
| namespace SfeduSchedule.Abstractions; | ||||
| 
 | ||||
| // Базовый контракт плагина (общий для хоста и плагинов) | ||||
| public interface IPlugin | ||||
| @@ -1,6 +1,6 @@ | ||||
| using System.ComponentModel; | ||||
| 
 | ||||
| namespace SfeduSchedule.Plugin.Abstractions; | ||||
| namespace SfeduSchedule.Abstractions; | ||||
| 
 | ||||
| /// <summary> | ||||
| /// DTO для запроса расписания в Modeus. | ||||
| @@ -1,5 +1,5 @@ | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using SfeduSchedule.Plugin.Abstractions; | ||||
| using SfeduSchedule.Abstractions; | ||||
|  | ||||
| namespace SfeduSchedule.Plugin.Sample; | ||||
|  | ||||
|   | ||||
| @@ -12,9 +12,7 @@ | ||||
|     </PropertyGroup> | ||||
|  | ||||
|     <ItemGroup> | ||||
|         <!-- Даёт доступ к Microsoft.AspNetCore.* (ControllerBase и т.п.) --> | ||||
|         <FrameworkReference Include="Microsoft.AspNetCore.App"/> | ||||
|         <ProjectReference Include="..\SfeduSchedule.Plugin.Abstractions\SfeduSchedule.Plugin.Abstractions.csproj" /> | ||||
|         <ProjectReference Include="..\SfeduSchedule.Abstractions\SfeduSchedule.Abstractions.csproj" /> | ||||
|     </ItemGroup> | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfeduSchedule", "SfeduSchedule\SfeduSchedule.csproj", "{57B088A7-D7E2-4B5D-82A4-A3070A78A3E4}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfeduSchedule.Plugin.Abstractions", "SfeduSchedule.Plugin.Abstractions\SfeduSchedule.Plugin.Abstractions.csproj", "{B2E8DAD7-7373-4155-B230-4E53DFC04445}" | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfeduSchedule.Abstractions", "SfeduSchedule.Abstractions\SfeduSchedule.Abstractions.csproj", "{B2E8DAD7-7373-4155-B230-4E53DFC04445}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfeduSchedule.Plugin.Sample", "SfeduSchedule.Plugin.Sample\SfeduSchedule.Plugin.Sample.csproj", "{B2B6D730-46AE-40ED-815F-81176FB4E545}" | ||||
| EndProject | ||||
|   | ||||
| @@ -3,7 +3,7 @@ using System.Text.Json; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.AspNetCore.RateLimiting; | ||||
| using SfeduSchedule.Plugin.Abstractions; | ||||
| using SfeduSchedule.Abstractions; | ||||
| using SfeduSchedule.Services; | ||||
|  | ||||
| namespace SfeduSchedule.Controllers | ||||
| @@ -71,6 +71,7 @@ namespace SfeduSchedule.Controllers | ||||
|         /// <response code="401">Неавторизованный</response> | ||||
|         [HttpGet] | ||||
|         [Authorize(AuthenticationSchemes = "ApiKey")] | ||||
|         [DisableRateLimiting] | ||||
|         [Route("getguid")] | ||||
|         public async Task<IActionResult> GetGuid(string fullname) | ||||
|         { | ||||
|   | ||||
| @@ -65,4 +65,4 @@ public static class MicrosoftLoginHelper | ||||
|         if (Regex.IsMatch(currentHost, "login\\.(microsoftonline|live)\\.com", RegexOptions.IgnoreCase)) | ||||
|             throw new Exception("Авторизация не завершена: остались на странице Microsoft Login"); | ||||
|     } | ||||
| } | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| using System.Reflection; | ||||
| using System.Runtime.Loader; | ||||
| using SfeduSchedule.Plugin.Abstractions; | ||||
| using SfeduSchedule.Abstractions; | ||||
|  | ||||
| namespace SfeduSchedule; | ||||
|  | ||||
| @@ -50,7 +50,7 @@ public sealed class PluginLoadContext : AssemblyLoadContext | ||||
|     } | ||||
|  | ||||
|     // Разрешаем управляемые зависимости плагина из его папки. | ||||
|     // Возвращаем null, чтобы отдать решение в Default ALC для общих сборок (например, SfeduSchedule.Plugin.Abstractions). | ||||
|     // Возвращаем null, чтобы отдать решение в Default ALC для общих сборок (например, SfeduSchedule.Abstractions). | ||||
|     protected override Assembly? Load(AssemblyName assemblyName) | ||||
|     { | ||||
|         var path = _resolver.ResolveAssemblyToPath(assemblyName); | ||||
|   | ||||
| @@ -18,6 +18,12 @@ string? tgChatId = configuration["TG_CHAT_ID"]; | ||||
| string? tgToken = configuration["TG_TOKEN"]; | ||||
| string updateJwtCron = configuration["UPDATE_JWT_CRON"] ?? "0 0 4 ? * *"; | ||||
|  | ||||
| // Если не указана TZ, ставим Europe/Moscow | ||||
| if (string.IsNullOrEmpty(configuration["TZ"])) | ||||
| { | ||||
|     configuration["TZ"] = "Europe/Moscow"; | ||||
| } | ||||
|  | ||||
| int permitLimit = int.TryParse(configuration["PERMIT_LIMIT"], out var parsedPermitLimit) ? parsedPermitLimit : 40; | ||||
| int timeLimit = int.TryParse(configuration["TIME_LIMIT"], out var parsedTimeLimit) ? parsedTimeLimit : 10; | ||||
|  | ||||
| @@ -96,7 +102,7 @@ builder.Services.AddSwaggerGen(options => | ||||
|     var mainXmlPath = Path.Combine(AppContext.BaseDirectory, mainXmlFile); | ||||
|     options.IncludeXmlComments(mainXmlPath); | ||||
|  | ||||
|     var pluginXmlFile = "SfeduSchedule.Plugin.Abstractions.xml"; | ||||
|     var pluginXmlFile = "SfeduSchedule.Abstractions.xml"; | ||||
|     var pluginXmlPath = Path.Combine(AppContext.BaseDirectory, pluginXmlFile); | ||||
|     options.IncludeXmlComments(pluginXmlPath); | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| using System.Text.Json; | ||||
| using Microsoft.Net.Http.Headers; | ||||
| using SfeduSchedule.Plugin.Abstractions; | ||||
| using SfeduSchedule.Abstractions; | ||||
|  | ||||
| namespace SfeduSchedule.Services | ||||
| { | ||||
| @@ -20,9 +20,9 @@ namespace SfeduSchedule.Services | ||||
|             _httpClient.DefaultRequestHeaders.Add(HeaderNames.Authorization, $"Bearer {token}"); | ||||
|         } | ||||
|  | ||||
|         public async Task<string?> GetScheduleAsync(ModeusScheduleRequest msr, string TZ = "Europe/Moscow") | ||||
|         public async Task<string?> GetScheduleAsync(ModeusScheduleRequest msr) | ||||
|         { | ||||
|             var request = new HttpRequestMessage(HttpMethod.Post, $"schedule-calendar-v2/api/calendar/events/search?tz={TZ}"); | ||||
|             var request = new HttpRequestMessage(HttpMethod.Post, $"schedule-calendar-v2/api/calendar/events/search?tz={_configuration["TZ"]!}"); | ||||
|             request.Content = new StringContent(JsonSerializer.Serialize(msr, GlobalVariables.jsonSerializerOptions), System.Text.Encoding.UTF8, "application/json"); | ||||
|             var response = await _httpClient.SendAsync(request); | ||||
|             _logger.LogInformation("GetScheduleAsync: Ответ получен: {StatusCode}", response.StatusCode); | ||||
|   | ||||
| @@ -18,7 +18,7 @@ | ||||
|     </ItemGroup> | ||||
|  | ||||
|     <ItemGroup> | ||||
|       <ProjectReference Include="..\SfeduSchedule.Plugin.Abstractions\SfeduSchedule.Plugin.Abstractions.csproj" /> | ||||
|       <ProjectReference Include="..\SfeduSchedule.Abstractions\SfeduSchedule.Abstractions.csproj" /> | ||||
|     </ItemGroup> | ||||
|  | ||||
| </Project> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user