aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/QuickConnect
diff options
context:
space:
mode:
authorConfusedPolarBear <33811686+ConfusedPolarBear@users.noreply.github.com>2020-04-15 14:28:42 -0500
committerConfusedPolarBear <33811686+ConfusedPolarBear@users.noreply.github.com>2020-04-15 14:49:20 -0500
commit36f3e933a23d802d154c16fd304a82c3fe3f453d (patch)
tree4c4bc33b45b6aa0bf4d5f1883e926225b8ef8fb7 /MediaBrowser.Controller/QuickConnect
parentd7df890017d2663b5ec70ce798d0775c7f4c5dbd (diff)
Add quick connect
Diffstat (limited to 'MediaBrowser.Controller/QuickConnect')
-rw-r--r--MediaBrowser.Controller/QuickConnect/IQuickConnect.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/QuickConnect/IQuickConnect.cs b/MediaBrowser.Controller/QuickConnect/IQuickConnect.cs
new file mode 100644
index 000000000..e4a790ffe
--- /dev/null
+++ b/MediaBrowser.Controller/QuickConnect/IQuickConnect.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using MediaBrowser.Model.QuickConnect;
+using MediaBrowser.Model.Services;
+
+namespace MediaBrowser.Controller.QuickConnect
+{
+ /// <summary>
+ /// Quick connect standard interface.
+ /// </summary>
+ public interface IQuickConnect
+ {
+ /// <summary>
+ /// Gets or sets the length of user facing codes.
+ /// </summary>
+ public int CodeLength { get; set; }
+
+ /// <summary>
+ /// Gets or sets the string to prefix internal access tokens with.
+ /// </summary>
+ public string TokenNamePrefix { get; set; }
+
+ /// <summary>
+ /// Gets the current state of quick connect.
+ /// </summary>
+ public QuickConnectState State { get; }
+
+ /// <summary>
+ /// Gets or sets the time (in minutes) before a pending request will expire.
+ /// </summary>
+ public int RequestExpiry { get; set; }
+
+ /// <summary>
+ /// Assert that quick connect is currently active and throws an exception if it is not.
+ /// </summary>
+ void AssertActive();
+
+ /// <summary>
+ /// Changes the status of quick connect.
+ /// </summary>
+ /// <param name="newState">New state to change to</param>
+ void SetEnabled(QuickConnectState newState);
+
+ /// <summary>
+ /// Initiates a new quick connect request.
+ /// </summary>
+ /// <param name="friendlyName">Friendly device name to display in the request UI.</param>
+ /// <returns>A quick connect result with tokens to proceed or a descriptive error message otherwise.</returns>
+ QuickConnectResult TryConnect(string friendlyName);
+
+ /// <summary>
+ /// Checks the status of an individual request.
+ /// </summary>
+ /// <param name="secret">Unique secret identifier of the request.</param>
+ /// <returns>Quick connect result.</returns>
+ QuickConnectResult CheckRequestStatus(string secret);
+
+ /// <summary>
+ /// Returns all current quick connect requests as DTOs. Does not include sensitive information.
+ /// </summary>
+ /// <returns>List of all quick connect results.</returns>
+ List<QuickConnectResultDto> GetCurrentRequests();
+
+ /// <summary>
+ /// Returns all current quick connect requests (including sensitive information).
+ /// </summary>
+ /// <returns>List of all quick connect results.</returns>
+ List<QuickConnectResult> GetCurrentRequestsInternal();
+
+ /// <summary>
+ /// Authorizes a quick connect request to connect as the calling user.
+ /// </summary>
+ /// <param name="request">HTTP request object.</param>
+ /// <param name="lookup">Public request lookup value.</param>
+ /// <returns>A boolean indicating if the authorization completed successfully.</returns>
+ bool AuthorizeRequest(IRequest request, string lookup);
+
+ /// <summary>
+ /// Deletes all quick connect access tokens for the provided user.
+ /// </summary>
+ /// <param name="user">Guid of the user to delete tokens for.</param>
+ /// <returns>A count of the deleted tokens.</returns>
+ int DeleteAllDevices(Guid user);
+
+ /// <summary>
+ /// Generates a short code to display to the user to uniquely identify this request.
+ /// </summary>
+ /// <returns>A short, unique alphanumeric string.</returns>
+ string GenerateCode();
+ }
+}