// Copyright Epic Games, Inc. All Rights Reserved. using System.Diagnostics; using System.Reflection; using Horde.Build.Api; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace Horde.Build.Controllers { /// /// Controller managing account status /// [ApiController] [Authorize] [Route("[controller]")] public class ServerController : ControllerBase { /// /// Settings for the server /// readonly IOptionsMonitor _settings; /// /// Constructor /// public ServerController(IOptionsMonitor settings) { _settings = settings; } /// /// Get server version /// [HttpGet] [Route("/api/v1/server/version")] public ActionResult GetVersionAsync() { FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); return Ok(fileVersionInfo.ProductVersion); } /// /// Get server information /// [HttpGet] [Route("/api/v1/server/info")] [ProducesResponseType(typeof(GetServerInfoResponse), 200)] public ActionResult GetServerInfo() { return new GetServerInfoResponse(_settings.CurrentValue.SingleInstance); } } }