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