using System;
using System.Diagnostics.CodeAnalysis;
using Jellyfin.Database.Implementations.Entities;
namespace MediaBrowser.Controller.Net
{
    /// 
    /// The request authorization info.
    /// 
    public class AuthorizationInfo
    {
        /// 
        /// Gets the user identifier.
        /// 
        /// The user identifier.
        public Guid UserId => User?.Id ?? Guid.Empty;
        /// 
        /// Gets or sets the device identifier.
        /// 
        /// The device identifier.
        public string? DeviceId { get; set; }
        /// 
        /// Gets or sets the device.
        /// 
        /// The device.
        public string? Device { get; set; }
        /// 
        /// Gets or sets the client.
        /// 
        /// The client.
        public string? Client { get; set; }
        /// 
        /// Gets or sets the version.
        /// 
        /// The version.
        public string? Version { get; set; }
        /// 
        /// Gets or sets the token.
        /// 
        /// The token.
        public string? Token { get; set; }
        /// 
        /// Gets or sets a value indicating whether the authorization is from an api key.
        /// 
        public bool IsApiKey { get; set; }
        /// 
        /// Gets or sets the user making the request.
        /// 
        public User? User { get; set; }
        /// 
        /// Gets or sets a value indicating whether the token is authenticated.
        /// 
        public bool IsAuthenticated { get; set; }
        /// 
        /// Gets a value indicating whether the request has a token.
        /// 
        [MemberNotNullWhen(true, nameof(Token))]
        public bool HasToken => !string.IsNullOrWhiteSpace(Token);
    }
}