From 36f3e933a23d802d154c16fd304a82c3fe3f453d Mon Sep 17 00:00:00 2001
From: ConfusedPolarBear <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Wed, 15 Apr 2020 14:28:42 -0500
Subject: Add quick connect
---
.../QuickConnect/IQuickConnect.cs | 91 ++++++++++++++++++++++
1 file changed, 91 insertions(+)
create mode 100644 MediaBrowser.Controller/QuickConnect/IQuickConnect.cs
(limited to 'MediaBrowser.Controller/QuickConnect')
diff --git a/MediaBrowser.Controller/QuickConnect/IQuickConnect.cs b/MediaBrowser.Controller/QuickConnect/IQuickConnect.cs
new file mode 100644
index 0000000000..e4a790ffe7
--- /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
+{
+ ///
+ /// Quick connect standard interface.
+ ///
+ public interface IQuickConnect
+ {
+ ///
+ /// Gets or sets the length of user facing codes.
+ ///
+ public int CodeLength { get; set; }
+
+ ///
+ /// Gets or sets the string to prefix internal access tokens with.
+ ///
+ public string TokenNamePrefix { get; set; }
+
+ ///
+ /// Gets the current state of quick connect.
+ ///
+ public QuickConnectState State { get; }
+
+ ///
+ /// Gets or sets the time (in minutes) before a pending request will expire.
+ ///
+ public int RequestExpiry { get; set; }
+
+ ///
+ /// Assert that quick connect is currently active and throws an exception if it is not.
+ ///
+ void AssertActive();
+
+ ///
+ /// Changes the status of quick connect.
+ ///
+ /// New state to change to
+ void SetEnabled(QuickConnectState newState);
+
+ ///
+ /// Initiates a new quick connect request.
+ ///
+ /// Friendly device name to display in the request UI.
+ /// A quick connect result with tokens to proceed or a descriptive error message otherwise.
+ QuickConnectResult TryConnect(string friendlyName);
+
+ ///
+ /// Checks the status of an individual request.
+ ///
+ /// Unique secret identifier of the request.
+ /// Quick connect result.
+ QuickConnectResult CheckRequestStatus(string secret);
+
+ ///
+ /// Returns all current quick connect requests as DTOs. Does not include sensitive information.
+ ///
+ /// List of all quick connect results.
+ List GetCurrentRequests();
+
+ ///
+ /// Returns all current quick connect requests (including sensitive information).
+ ///
+ /// List of all quick connect results.
+ List GetCurrentRequestsInternal();
+
+ ///
+ /// Authorizes a quick connect request to connect as the calling user.
+ ///
+ /// HTTP request object.
+ /// Public request lookup value.
+ /// A boolean indicating if the authorization completed successfully.
+ bool AuthorizeRequest(IRequest request, string lookup);
+
+ ///
+ /// Deletes all quick connect access tokens for the provided user.
+ ///
+ /// Guid of the user to delete tokens for.
+ /// A count of the deleted tokens.
+ int DeleteAllDevices(Guid user);
+
+ ///
+ /// Generates a short code to display to the user to uniquely identify this request.
+ ///
+ /// A short, unique alphanumeric string.
+ string GenerateCode();
+ }
+}
--
cgit v1.2.3