VEU.WathBody/3-app/2-cli/Server.WatchBody.Web/Config/RouteConfig.cs

87 lines
4.1 KiB
C#

using Kit.Helpers.Routes;
using Server.WatchBody.Web.Controllers;
namespace Server.WatchBody.Web.Config;
/// <summary>
/// Таблица маршрутов REST API v1 (fluent Kit.Helpers.Routes,
/// пример — Kit.Task.WebAp\Task.WebApp\Config\RouteConfig.cs).
/// </summary>
public class RouteConfig
{
public static void Configure(IRouteBuilder routeBuilder)
{
routeBuilder.AddController<HealthController>()
.ContentAction("health", x => x.Info)
.NeedHttpGet();
routeBuilder.AddController<SyncController>()
.ActionAction("api/v1/sync", x => x.Sync)
.NeedHttpPost_All();
routeBuilder.AddController<WorkoutController>()
.ActionAction<int?, int?>("api/v1/workouts", x => x.List)
.NeedHttpGet()
.ActionAction<string>("api/v1/workouts/{id}", x => x.Get)
.NeedHttpGet();
routeBuilder.AddController<ProgramController>()
.ActionAction("api/v1/programs/active", x => x.Active)
.NeedHttpGet();
// admin-контур (m08): Bearer, отдельный от X-Api-Key.
// по одному блоку на действие: NeedHttpPost_All нельзя чейнить
// на несколько роутов (RouteFluent — дубль ключа httpMethod)
routeBuilder.AddController<Controllers.Admin.AdminAuthController>()
.ActionAction("api/admin/login", x => x.Login)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminAuthController>()
.ActionAction("api/admin/logout", x => x.Logout)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminAthletesController>()
.ActionAction("api/admin/athletes", x => x.List)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminAthletesController>()
.ActionAction("api/admin/athletes", x => x.Create)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminAthletesController>()
.ActionAction<int>("api/admin/athletes/{id}/key", x => x.NewKey)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminAthletesController>()
.ActionAction<int>("api/admin/athletes/{id}/block", x => x.Block)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminWorkoutsController>()
.ActionAction<int?, string?, string?, int?, int?>(
"api/admin/workouts", x => x.List)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminWorkoutsController>()
.ActionAction<string>("api/admin/workouts/{id}", x => x.Get)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminWorkoutsController>()
.ActionAction<int?, string?, string?>("api/admin/workouts.csv", x => x.Csv)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminProgramsController>()
.ActionAction<int>("api/admin/programs", x => x.List)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminProgramsController>()
.ActionAction<string, int>("api/admin/programs/{versionId}", x => x.Get)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminProgramsController>()
.ActionAction<string, int>("api/admin/programs/{versionId}/activate", x => x.Activate)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminProgramsController>()
.ActionAction<string, int>("api/admin/programs/{versionId}/apply", x => x.Apply)
.NeedHttpPost_All();
routeBuilder.AddController<Controllers.Admin.AdminMetricsController>()
.ActionAction<int, string?, string?>("api/admin/metrics", x => x.Metrics)
.NeedHttpGet();
routeBuilder.AddController<Controllers.Admin.AdminMetricsController>()
.ActionAction<int>("api/admin/plan", x => x.Plan)
.NeedHttpGet();
}
}