using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Session; using System; using System.Collections.Generic; using System.Linq; namespace MediaBrowser.Controller.Session { /// /// Class SessionInfo /// public class SessionInfo { public SessionInfo() { QueueableMediaTypes = new List(); PlayableMediaTypes = new List { MediaType.Audio, MediaType.Book, MediaType.Game, MediaType.Photo, MediaType.Video }; AdditionalUsers = new List(); } public List AdditionalUsers { get; set; } /// /// Gets or sets the remote end point. /// /// The remote end point. public string RemoteEndPoint { get; set; } /// /// Gets or sets a value indicating whether this instance can seek. /// /// true if this instance can seek; otherwise, false. public bool CanSeek { get; set; } /// /// Gets or sets the queueable media types. /// /// The queueable media types. public List QueueableMediaTypes { get; set; } /// /// Gets or sets the playable media types. /// /// The playable media types. public List PlayableMediaTypes { get; set; } /// /// Gets or sets the id. /// /// The id. public Guid Id { get; set; } /// /// Gets or sets the user id. /// /// The user id. public Guid? UserId { get; set; } /// /// Gets or sets the username. /// /// The username. public string UserName { get; set; } /// /// Gets or sets the type of the client. /// /// The type of the client. public string Client { get; set; } /// /// Gets or sets the last activity date. /// /// The last activity date. public DateTime LastActivityDate { get; set; } /// /// Gets or sets the name of the device. /// /// The name of the device. public string DeviceName { get; set; } /// /// Gets or sets the now viewing context. /// /// The now viewing context. public string NowViewingContext { get; set; } /// /// Gets or sets the type of the now viewing item. /// /// The type of the now viewing item. public string NowViewingItemType { get; set; } /// /// Gets or sets the now viewing item identifier. /// /// The now viewing item identifier. public string NowViewingItemId { get; set; } /// /// Gets or sets the name of the now viewing item. /// /// The name of the now viewing item. public string NowViewingItemName { get; set; } /// /// Gets or sets the now playing item. /// /// The now playing item. public BaseItem NowPlayingItem { get; set; } /// /// Gets or sets the now playing media version identifier. /// /// The now playing media version identifier. public string NowPlayingMediaVersionId { get; set; } /// /// Gets or sets the now playing run time ticks. /// /// The now playing run time ticks. public long? NowPlayingRunTimeTicks { get; set; } /// /// Gets or sets the now playing position ticks. /// /// The now playing position ticks. public long? NowPlayingPositionTicks { get; set; } /// /// Gets or sets a value indicating whether this instance is paused. /// /// true if this instance is paused; otherwise, false. public bool IsPaused { get; set; } /// /// Gets or sets a value indicating whether this instance is muted. /// /// true if this instance is muted; otherwise, false. public bool IsMuted { get; set; } /// /// Gets or sets the device id. /// /// The device id. public string DeviceId { get; set; } /// /// Gets or sets the application version. /// /// The application version. public string ApplicationVersion { get; set; } /// /// Gets or sets the session controller. /// /// The session controller. public ISessionController SessionController { get; set; } /// /// Gets or sets a value indicating whether [supports fullscreen toggle]. /// /// true if [supports fullscreen toggle]; otherwise, false. public bool SupportsFullscreenToggle { get; set; } /// /// Gets or sets a value indicating whether [supports osd toggle]. /// /// true if [supports osd toggle]; otherwise, false. public bool SupportsOsdToggle { get; set; } /// /// Gets or sets a value indicating whether [supports navigation commands]. /// /// true if [supports navigation commands]; otherwise, false. public bool SupportsNavigationControl { get; set; } /// /// Gets a value indicating whether this instance is active. /// /// true if this instance is active; otherwise, false. public bool IsActive { get { if (SessionController != null) { return SessionController.IsSessionActive; } return (DateTime.UtcNow - LastActivityDate).TotalMinutes <= 10; } } /// /// Gets a value indicating whether [supports remote control]. /// /// true if [supports remote control]; otherwise, false. public bool SupportsRemoteControl { get { if (SessionController != null) { return SessionController.SupportsMediaRemoteControl; } return false; } } public bool ContainsUser(Guid userId) { return (UserId ?? Guid.Empty) == UserId || AdditionalUsers.Any(i => userId == new Guid(i.UserId)); } } }