using System; using System.Collections.Generic; using System.Globalization; using Jellyfin.Plugin.MetaShark.Configuration; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using Microsoft.AspNetCore.Http; namespace Jellyfin.Plugin.MetaShark; /// /// The main plugin. /// public class Plugin : BasePlugin, IHasWebPages { /// /// Gets the provider name. /// public const string PluginName = "MetaShark"; /// /// Gets the provider id. /// public const string ProviderId = "MetaSharkID"; protected readonly IHttpContextAccessor _httpContextAccessor; /// /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. /// /// Instance of the interface. public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer, IHttpContextAccessor httpContextAccessor) : base(applicationPaths, xmlSerializer) { this._httpContextAccessor = httpContextAccessor; Plugin.Instance = this; } /// public override string Name => PluginName; /// public override Guid Id => Guid.Parse("9A19103F-16F7-4668-BE54-9A1E7A4F7556"); /// /// Gets the current plugin instance. /// public static Plugin? Instance { get; private set; } /// public IEnumerable GetPages() { return new[] { new PluginPageInfo { Name = this.Name, EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Configuration.configPage.html", GetType().Namespace) } }; } /// /// jellyfin web服务域名 /// 注意:经过nginx代理后,会拿不到真正的域名,需要用户配置http服务传入真正host /// public string BaseUrl { get { if (_httpContextAccessor.HttpContext != null) { // // 使用web浏览器访问直接使用相对链接???可解决用户配置了http反代 // var userAgent = _httpContextAccessor.HttpContext.Request.Headers.UserAgent.ToString(); // var fromWeb = userAgent.Contains("Chrome") || userAgent.Contains("Safari"); // if (fromWeb) return string.Empty; return _httpContextAccessor.HttpContext.Request.Scheme + System.Uri.SchemeDelimiter + _httpContextAccessor.HttpContext.Request.Host; } else { return string.Empty; } } } }