diff options
| author | crobibero <cody@robibe.ro> | 2021-04-26 07:02:26 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2021-04-26 07:02:26 -0600 |
| commit | 1d6224c9c66b31c9df602b4281c870a9c400767c (patch) | |
| tree | 91e65f2c5aa0de89a9782a3036a9fc62777ea929 /Jellyfin.Api/Controllers/ClientLogController.cs | |
| parent | 5df87b3e0da0ef3010ec9929939ef3084bff42be (diff) | |
Add endpoint to log client events
Diffstat (limited to 'Jellyfin.Api/Controllers/ClientLogController.cs')
| -rw-r--r-- | Jellyfin.Api/Controllers/ClientLogController.cs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Jellyfin.Api/Controllers/ClientLogController.cs b/Jellyfin.Api/Controllers/ClientLogController.cs new file mode 100644 index 000000000..8e38cd13c --- /dev/null +++ b/Jellyfin.Api/Controllers/ClientLogController.cs @@ -0,0 +1,69 @@ +using Jellyfin.Api.Models.ClientLogDtos; +using MediaBrowser.Controller.ClientEvent; +using MediaBrowser.Model.ClientLog; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Jellyfin.Api.Controllers +{ + /// <summary> + /// Client log controller. + /// </summary> + public class ClientLogController : BaseJellyfinApiController + { + private readonly IClientEventLogger _clientEventLogger; + + /// <summary> + /// Initializes a new instance of the <see cref="ClientLogController"/> class. + /// </summary> + /// <param name="clientEventLogger">Instance of the <see cref="IClientEventLogger"/> interface.</param> + public ClientLogController(IClientEventLogger clientEventLogger) + { + _clientEventLogger = clientEventLogger; + } + + /// <summary> + /// Post event from client. + /// </summary> + /// <param name="clientLogEventDto">The client log dto.</param> + /// <response code="204">Event logged.</response> + /// <returns>Submission status.</returns> + [HttpPost] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public ActionResult LogEvent([FromBody] ClientLogEventDto clientLogEventDto) + { + Log(clientLogEventDto); + return NoContent(); + } + + /// <summary> + /// Bulk post events from client. + /// </summary> + /// <param name="clientLogEventDtos">The list of client log dtos.</param> + /// <response code="204">All events logged.</response> + /// <returns>Submission status.</returns> + [HttpPost("Bulk")] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public ActionResult LogEvents([FromBody] ClientLogEventDto[] clientLogEventDtos) + { + foreach (var dto in clientLogEventDtos) + { + Log(dto); + } + + return NoContent(); + } + + private void Log(ClientLogEventDto dto) + { + _clientEventLogger.Log(new ClientLogEvent( + dto.Timestamp, + dto.Level, + dto.UserId, + dto.ClientName, + dto.ClientVersion, + dto.DeviceId, + dto.Message)); + } + } +}
\ No newline at end of file |
