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;
}
}
}
}