using System; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using Microsoft.AspNetCore.Http; namespace Jellyfin.Api.Helpers { /// /// Request Extensions. /// public static class RequestHelpers { /// /// Splits a string at a separating character into an array of substrings. /// /// The string to split. /// The char that separates the substrings. /// Option to remove empty substrings from the array. /// An array of the substrings. internal static string[] Split(string value, char separator, bool removeEmpty) { if (string.IsNullOrWhiteSpace(value)) { return Array.Empty(); } return removeEmpty ? value.Split(new[] { separator }, StringSplitOptions.RemoveEmptyEntries) : value.Split(separator); } internal static SessionInfo GetSession(ISessionManager sessionManager, IAuthorizationContext authContext, HttpRequest request) { var authorization = authContext.GetAuthorizationInfo(request); var user = authorization.User; var session = sessionManager.LogSessionActivity( authorization.Client, authorization.Version, authorization.DeviceId, authorization.Device, request.HttpContext.Connection.RemoteIpAddress.ToString(), user); if (session == null) { throw new ArgumentException("Session not found."); } return session; } } }