using System; using System.Globalization; using MediaBrowser.Model.SyncPlay; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Api.Controllers { /// /// The time sync controller. /// [Route("")] public class TimeSyncController : BaseJellyfinApiController { /// /// Gets the current utc time. /// /// Time returned. /// An to sync the client and server time. [HttpGet("GetUtcTime")] [ProducesResponseType(statusCode: StatusCodes.Status200OK)] public ActionResult GetUtcTime() { // Important to keep the following line at the beginning var requestReceptionTime = DateTime.UtcNow.ToUniversalTime().ToString("o", DateTimeFormatInfo.InvariantInfo); var response = new UtcTimeResponse(); response.RequestReceptionTime = requestReceptionTime; // Important to keep the following two lines at the end var responseTransmissionTime = DateTime.UtcNow.ToUniversalTime().ToString("o", DateTimeFormatInfo.InvariantInfo); response.ResponseTransmissionTime = responseTransmissionTime; // Implementing NTP on such a high level results in this useless // information being sent. On the other hand it enables future additions. return response; } } }