namespace Brizco.Api.WebFramework.ScalarUi;

public static class ScalarUiConfiguration
{
    public static void MapScalarUi(this IEndpointRouteBuilder app)
    {
        app.MapGet("/scalar/{documentName}", (string documentName) =>
        {

            var scalarScript = $$"""
                                  <!doctype html>
                                  <html>
                                    <head>
                                      <title>Scalar API Reference</title>
                                      <meta charset="utf-8" />
                                      <meta
                                        name="viewport"
                                        content="width=device-width, initial-scale=1" />
                                    </head>
                                    <body>
                                      <!-- Add your own OpenAPI/Swagger specification URL here: -->
                                      <!-- Note: The example is our public proxy (to avoid CORS issues). You can remove the `data-proxy-url` attribute if you don’t need it. -->
                                      <script
                                        id="api-reference"
                                        data-url="/swagger/{{documentName}}/swagger.json"></script>
                                  
                                      <!-- Optional: You can set a full configuration object like this: -->
                                      <script>
                                        var configuration = {
                                          theme: 'bluePlanet',
                                        }
                                  
                                        document.getElementById('api-reference').dataset.configuration =
                                          JSON.stringify(configuration)
                                      </script>
                                      <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
                                    </body>
                                  </html>
                                  """;

            return Results.Content(scalarScript, "text/html");
        }).ExcludeFromDescription();
    }
}