Добавил копию контроллера для мягкого переезда
This commit is contained in:
68
SfeduSchedule/Controllers/ProxyController.cs
Normal file
68
SfeduSchedule/Controllers/ProxyController.cs
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
using System.Net;
|
||||||
|
using System.Text.Json;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.RateLimiting;
|
||||||
|
using SfeduSchedule.Abstractions;
|
||||||
|
using SfeduSchedule.Services;
|
||||||
|
|
||||||
|
namespace SfeduSchedule.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/proxy")]
|
||||||
|
[EnableRateLimiting("throttle")]
|
||||||
|
public class ProxyController(ModeusService modeusService, ILogger<ScheduleController> logger) : ControllerBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Получить расписание по пользовательскому запросу.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request">Объект запроса, содержащий параметры фильтрации расписания.</param>
|
||||||
|
/// <returns>Список событий расписания.</returns>
|
||||||
|
/// <response code="200">Возвращает расписание</response>
|
||||||
|
/// <response code="429">Слишком много запросов</response>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IActionResult> Post([FromBody] ModeusScheduleRequest request)
|
||||||
|
{
|
||||||
|
string? schedule;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
schedule = await modeusService.GetScheduleAsync(request);
|
||||||
|
}
|
||||||
|
catch (HttpRequestException e)
|
||||||
|
{
|
||||||
|
logger.LogError("Ошибка при получении расписания\n\n" + e.Message + "\n\n" + e.StackTrace +
|
||||||
|
"\n\n JSON: " +
|
||||||
|
JsonSerializer.Serialize(request, GlobalVariables.JsonSerializerOptions));
|
||||||
|
return StatusCode((int)(e.StatusCode ?? HttpStatusCode.InternalServerError),
|
||||||
|
"Proxied Modeus: " + e.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(schedule);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Поиск аудиторий по пользовательскому запросу.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request">Объект запроса, содержащий параметры фильтрации аудиторий.</param>
|
||||||
|
/// <returns>Список аудиторий.</returns>
|
||||||
|
/// <response code="200">Возвращает список аудиторий</response>
|
||||||
|
/// <response code="429">Слишком много запросов</response>
|
||||||
|
[HttpPost]
|
||||||
|
[Route("rooms/search")]
|
||||||
|
public async Task<IActionResult> SearchRooms([FromBody] RoomSearchRequest request)
|
||||||
|
{
|
||||||
|
string? rooms;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rooms = await modeusService.SearchRoomsAsync(request);
|
||||||
|
}
|
||||||
|
catch (HttpRequestException e)
|
||||||
|
{
|
||||||
|
logger.LogError("Ошибка при поиске аудиторий\n\n" + e.Message + "\n\n" + e.StackTrace + "\n\n JSON: " +
|
||||||
|
JsonSerializer.Serialize(request, GlobalVariables.JsonSerializerOptions));
|
||||||
|
return StatusCode((int)(e.StatusCode ?? HttpStatusCode.InternalServerError),
|
||||||
|
"Proxied Modeus: " + e.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(rooms);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user