using System;
using System.Collections.Generic;
using System.Globalization;
using Jellyfin.Plugin.Floatplane.Configuration;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Serialization;
namespace Jellyfin.Plugin.Floatplane;
///
/// Floatplane plugin — exposes Floatplane subscriptions as a Jellyfin channel.
///
public class Plugin : BasePlugin, IHasWebPages
{
/// Plugin GUID; must match build.yaml / meta.json.
public const string PluginGuid = "7f2b6c1e-5a3d-4e8f-9b0a-2c4d6e8f0a1b";
public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
: base(applicationPaths, xmlSerializer)
{
Instance = this;
}
///
public override string Name => "Floatplane";
///
public override Guid Id => Guid.Parse(PluginGuid);
///
public override string Description => "Browse and play your Floatplane subscriptions inside Jellyfin.";
/// Gets the current plugin instance.
public static Plugin? Instance { get; private set; }
/// Gets the User-Agent the plugin identifies itself with towards Floatplane.
public static string UserAgent { get; } = string.Format(
CultureInfo.InvariantCulture,
"Jellyfin-Floatplane/{0} (+https://gitea.brasse-pc.eu/brasse/jellyfin-plugin-floatplane)",
typeof(Plugin).Assembly.GetName().Version?.ToString(3) ?? "0.0.0");
///
public IEnumerable GetPages()
{
return
[
new PluginPageInfo
{
Name = Name,
EmbeddedResourcePath = string.Format(
CultureInfo.InvariantCulture,
"{0}.Configuration.configPage.html",
GetType().Namespace)
}
];
}
}