diff --git a/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerController.cs b/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerController.cs index ff72fd66..49e12005 100644 --- a/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerController.cs +++ b/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerController.cs @@ -1,53 +1,46 @@ using System.Text.Json; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using MoonCore.Helpers; using MoonCore.Services; using Moonlight.ApiServer.Configuration; using Moonlight.ApiServer.Models; namespace Moonlight.ApiServer.Http.Controllers.Swagger; -[ApiController] +[AllowAnonymous] [Route("api/swagger")] public class SwaggerController : Controller { private readonly AppConfiguration Configuration; + private readonly IServiceProvider ServiceProvider; - public SwaggerController(AppConfiguration configuration) + public SwaggerController( + AppConfiguration configuration, + IServiceProvider serviceProvider + ) { Configuration = configuration; + ServiceProvider = serviceProvider; } - + [HttpGet] + [Authorize] public async Task Get() { if (!Configuration.Development.EnableApiDocs) return BadRequest("Api docs are disabled"); - + var options = new ApiDocsOptions(); var optionsJson = JsonSerializer.Serialize(options); - //TODO: Replace the css link with a better one - - var html = "\n" + - "\n" + - "\n" + - "Moonlight Api Reference\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - ""; + var html = await ComponentHelper.RenderComponent( + ServiceProvider, + parameters => + { + parameters.Add("Options", optionsJson); + } + ); return Content(html, "text/html"); } diff --git a/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerPage.razor b/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerPage.razor new file mode 100644 index 00000000..637daccc --- /dev/null +++ b/Moonlight.ApiServer/Http/Controllers/Swagger/SwaggerPage.razor @@ -0,0 +1,92 @@ + + + + Moonlight Api Reference + + + + + + + + + + + +@code +{ + [Parameter] public string Options { get; set; } +}