diff --git a/src/Tgstation.Server.Host/Controllers/RootController.cs b/src/Tgstation.Server.Host/Controllers/RootController.cs
index 577fecf1c6..fcf2bd239b 100644
--- a/src/Tgstation.Server.Host/Controllers/RootController.cs
+++ b/src/Tgstation.Server.Host/Controllers/RootController.cs
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
+using Tgstation.Server.Api;
using Tgstation.Server.Host.Configuration;
using Tgstation.Server.Host.Extensions;
using Tgstation.Server.Host.System;
@@ -62,6 +63,11 @@ namespace Tgstation.Server.Host.Controllers
///
readonly ControlPanelConfiguration controlPanelConfiguration;
+ ///
+ /// The for the .
+ ///
+ readonly InternalConfiguration internalConfiguration;
+
///
/// Gets a giving the and action names for a given .
///
@@ -92,13 +98,15 @@ namespace Tgstation.Server.Host.Controllers
/// The value of .
/// The containing the value of .
/// The containing the value of .
+ /// The containing the value of .
public RootController(
IAssemblyInformationProvider assemblyInformationProvider,
IPlatformIdentifier platformIdentifier,
IWebHostEnvironment hostEnvironment,
ILogger logger,
IOptions generalConfigurationOptions,
- IOptions controlPanelConfigurationOptions)
+ IOptions controlPanelConfigurationOptions,
+ IOptionsSnapshot internalConfigurationOptions)
{
this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier));
@@ -106,6 +114,7 @@ namespace Tgstation.Server.Host.Controllers
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
controlPanelConfiguration = controlPanelConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(controlPanelConfigurationOptions));
+ internalConfiguration = internalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(internalConfigurationOptions));
}
///
@@ -120,19 +129,26 @@ namespace Tgstation.Server.Host.Controllers
var apiDocsEnabled = generalConfiguration.HostApiDocumentation;
var controlPanelRoute = $"{ControlPanelController.ControlPanelRoute.TrimStart('/')}/";
- if (panelEnabled ^ apiDocsEnabled)
- if (panelEnabled)
- return Redirect(controlPanelRoute);
- else
- return Redirect(SwaggerConfiguration.DocumentationSiteRouteExtension);
+ if (panelEnabled && !apiDocsEnabled)
+ return Redirect(controlPanelRoute);
- Dictionary? links;
- if (panelEnabled)
- links = new Dictionary()
+ Dictionary? links = null;
+
+ if (panelEnabled || apiDocsEnabled)
+ {
+ links = new Dictionary();
+
+ if (panelEnabled)
+ links.Add("Web Control Panel", controlPanelRoute);
+
+ if (apiDocsEnabled)
{
- { "Web Control Panel", controlPanelRoute },
- { "API Documentation", SwaggerConfiguration.DocumentationSiteRouteExtension },
- };
+ if (internalConfiguration.EnableGraphQL)
+ links.Add("GraphQL API Documentation", Routes.GraphQL);
+
+ links.Add("REST API Documentation", SwaggerConfiguration.DocumentationSiteRouteExtension);
+ }
+ }
else
links = null;