using MediaBrowser.Model.Plugins;
namespace Jellyfin.Plugin.SRFPlay.Configuration;
///
/// Business unit options for SRF content.
///
public enum BusinessUnit
{
///
/// SRF (Swiss Radio and Television - German).
///
SRF,
///
/// RTS (Radio Télévision Suisse - French).
///
RTS,
///
/// RSI (Radiotelevisione svizzera - Italian).
///
RSI,
///
/// RTR (Radiotelevisiun Svizra Rumantscha - Romansh).
///
RTR,
///
/// SWI (Swiss World International).
///
SWI
}
///
/// Quality preference for video streams.
///
public enum QualityPreference
{
///
/// Automatic quality selection.
///
Auto,
///
/// Standard definition.
///
SD,
///
/// High definition.
///
HD
}
///
/// Plugin configuration.
///
public class PluginConfiguration : BasePluginConfiguration
{
///
/// Initializes a new instance of the class.
///
public PluginConfiguration()
{
// Set default options
BusinessUnit = BusinessUnit.SRF;
QualityPreference = QualityPreference.Auto;
ContentRefreshIntervalHours = 6;
ExpirationCheckIntervalHours = 24;
CacheDurationMinutes = 60;
EnableLatestContent = true;
EnableTrendingContent = true;
EnableCategoryFolders = true;
EnabledTopics = new System.Collections.Generic.List();
}
///
/// Gets or sets the business unit to fetch content from.
///
public BusinessUnit BusinessUnit { get; set; }
///
/// Gets or sets the preferred video quality.
///
public QualityPreference QualityPreference { get; set; }
///
/// Gets or sets the content refresh interval in hours.
///
public int ContentRefreshIntervalHours { get; set; }
///
/// Gets or sets the expiration check interval in hours.
///
public int ExpirationCheckIntervalHours { get; set; }
///
/// Gets or sets the metadata cache duration in minutes.
///
public int CacheDurationMinutes { get; set; }
///
/// Gets or sets a value indicating whether to enable latest content discovery.
///
public bool EnableLatestContent { get; set; }
///
/// Gets or sets a value indicating whether to enable trending content discovery.
///
public bool EnableTrendingContent { get; set; }
///
/// Gets or sets a value indicating whether to use a proxy for API requests.
///
public bool UseProxy { get; set; }
///
/// Gets or sets the proxy server address (e.g., http://proxy.example.com:8080).
///
public string ProxyAddress { get; set; } = string.Empty;
///
/// Gets or sets the proxy username (optional).
///
public string ProxyUsername { get; set; } = string.Empty;
///
/// Gets or sets the proxy password (optional).
///
public string ProxyPassword { get; set; } = string.Empty;
///
/// Gets or sets a value indicating whether to enable category/topic folders in the channel.
///
public bool EnableCategoryFolders { get; set; }
///
/// Gets or sets the list of enabled topic IDs. If empty, all topics are shown.
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "Required for configuration serialization")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1002:Do not expose generic lists", Justification = "Configuration DTO")]
public System.Collections.Generic.List EnabledTopics { get; set; }
}