mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-07 20:47:44 +00:00
migrated to v15
This commit is contained in:
@@ -19,7 +19,6 @@ namespace PlexAPI
|
||||
using System;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The protocol to use when connecting to your plex server.
|
||||
/// </summary>
|
||||
@@ -92,6 +91,15 @@ namespace PlexAPI
|
||||
/// </summary>
|
||||
public IMedia Media { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls that perform operations with Plex Media Server Videos<br/>
|
||||
///
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public IVideo Video { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.<br/>
|
||||
///
|
||||
@@ -152,6 +160,15 @@ namespace PlexAPI
|
||||
/// </summary>
|
||||
public ILog Log { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls that perform operations directly against https://Plex.tv<br/>
|
||||
///
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public IPlex Plex { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017"). <br/>
|
||||
///
|
||||
@@ -165,13 +182,22 @@ namespace PlexAPI
|
||||
public IPlaylists Playlists { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls against Security for Plex Media Server<br/>
|
||||
/// API Calls regarding authentication for Plex Media Server<br/>
|
||||
///
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public ISecurity Security { get; }
|
||||
public IAuthentication Authentication { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls that perform operations with Plex Media Server Statistics<br/>
|
||||
///
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public IStatistics Statistics { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls that perform search operations with Plex Media Server Sessions<br/>
|
||||
@@ -191,24 +217,17 @@ namespace PlexAPI
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public IUpdater Updater { get; }
|
||||
|
||||
/// <summary>
|
||||
/// API Calls that perform operations with Plex Media Server Videos<br/>
|
||||
///
|
||||
/// <remarks>
|
||||
///
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
public IVideo Video { get; }
|
||||
}
|
||||
|
||||
|
||||
public class SDKConfig
|
||||
{
|
||||
public static string[] ServerList = new string[]
|
||||
{
|
||||
/// <summary>
|
||||
/// List of server URLs available to the SDK.
|
||||
/// </summary>
|
||||
public static readonly string[] ServerList = {
|
||||
"{protocol}://{ip}:{port}",
|
||||
};
|
||||
/// Contains the list of servers available to the SDK
|
||||
|
||||
public string serverUrl = "";
|
||||
public int serverIndex = 0;
|
||||
public List<Dictionary<string, string>> ServerDefaults = new List<Dictionary<string, string>>();
|
||||
@@ -235,31 +254,45 @@ namespace PlexAPI
|
||||
public SDKConfig SDKConfiguration { get; private set; }
|
||||
|
||||
private const string _language = "csharp";
|
||||
private const string _sdkVersion = "0.1.5";
|
||||
private const string _sdkGenVersion = "2.237.3";
|
||||
private const string _sdkVersion = "0.2.1";
|
||||
private const string _sdkGenVersion = "2.281.2";
|
||||
private const string _openapiDocVersion = "0.0.3";
|
||||
private const string _userAgent = "speakeasy-sdk/csharp 0.1.5 2.237.3 0.0.3 Plex-API";
|
||||
private const string _userAgent = "speakeasy-sdk/csharp 0.2.1 2.281.2 0.0.3 Plex-API";
|
||||
private string _serverUrl = "";
|
||||
private int _serverIndex = 0;
|
||||
private ISpeakeasyHttpClient _defaultClient;
|
||||
private ISpeakeasyHttpClient _securityClient;
|
||||
private Func<Security>? _securitySource;
|
||||
public IServer Server { get; private set; }
|
||||
public IMedia Media { get; private set; }
|
||||
public IVideo Video { get; private set; }
|
||||
public IActivities Activities { get; private set; }
|
||||
public IButler Butler { get; private set; }
|
||||
public IHubs Hubs { get; private set; }
|
||||
public ISearch Search { get; private set; }
|
||||
public ILibrary Library { get; private set; }
|
||||
public ILog Log { get; private set; }
|
||||
public IPlex Plex { get; private set; }
|
||||
public IPlaylists Playlists { get; private set; }
|
||||
public ISecurity Security { get; private set; }
|
||||
public IAuthentication Authentication { get; private set; }
|
||||
public IStatistics Statistics { get; private set; }
|
||||
public ISessions Sessions { get; private set; }
|
||||
public IUpdater Updater { get; private set; }
|
||||
public IVideo Video { get; private set; }
|
||||
|
||||
public PlexAPISDK(Security? security = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary<string, string>? urlParams = null, ISpeakeasyHttpClient? client = null)
|
||||
public PlexAPISDK(string? accessToken = null, Func<string>? accessTokenSource = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary<string, string>? urlParams = null, ISpeakeasyHttpClient? client = null)
|
||||
{
|
||||
if (serverUrl != null) {
|
||||
if (urlParams != null) {
|
||||
if (serverIndex != null)
|
||||
{
|
||||
if (serverIndex.Value < 0 || serverIndex.Value >= SDKConfig.ServerList.Length)
|
||||
{
|
||||
throw new Exception($"Invalid server index {serverIndex.Value}");
|
||||
}
|
||||
_serverIndex = serverIndex.Value;
|
||||
}
|
||||
|
||||
if (serverUrl != null)
|
||||
{
|
||||
if (urlParams != null)
|
||||
{
|
||||
serverUrl = Utilities.TemplateUrl(serverUrl, urlParams);
|
||||
}
|
||||
_serverUrl = serverUrl;
|
||||
@@ -275,32 +308,42 @@ namespace PlexAPI
|
||||
};
|
||||
|
||||
_defaultClient = new SpeakeasyHttpClient(client);
|
||||
_securityClient = _defaultClient;
|
||||
|
||||
if(security != null)
|
||||
|
||||
if(accessTokenSource != null)
|
||||
{
|
||||
_securityClient = SecuritySerializer.Apply(_defaultClient, security);
|
||||
_securitySource = () => new Security() { AccessToken = accessTokenSource() };
|
||||
}
|
||||
|
||||
else if(accessToken != null)
|
||||
{
|
||||
_securitySource = () => new Security() { AccessToken = accessToken };
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("accessToken and accessTokenSource cannot both be null");
|
||||
}
|
||||
|
||||
SDKConfiguration = new SDKConfig()
|
||||
{
|
||||
ServerDefaults = serverDefaults,
|
||||
serverIndex = _serverIndex,
|
||||
serverUrl = _serverUrl
|
||||
};
|
||||
|
||||
Server = new Server(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Media = new Media(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Activities = new Activities(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Butler = new Butler(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Hubs = new Hubs(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Search = new Search(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Library = new Library(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Log = new Log(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Playlists = new Playlists(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Security = new Security(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Sessions = new Sessions(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Updater = new Updater(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Video = new Video(_defaultClient, _securityClient, _serverUrl, SDKConfiguration);
|
||||
Server = new Server(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Media = new Media(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Video = new Video(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Activities = new Activities(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Butler = new Butler(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Hubs = new Hubs(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Search = new Search(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Library = new Library(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Log = new Log(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Plex = new Plex(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Playlists = new Playlists(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Authentication = new Authentication(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Statistics = new Statistics(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Sessions = new Sessions(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
Updater = new Updater(_defaultClient, _securitySource, _serverUrl, SDKConfiguration);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user