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