aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common')
-rw-r--r--MediaBrowser.Common/Extensions/HexHelper.cs22
-rw-r--r--MediaBrowser.Common/IApplicationHost.cs8
-rw-r--r--MediaBrowser.Common/MediaBrowser.Common.csproj6
-rw-r--r--MediaBrowser.Common/Net/HttpRequestOptions.cs66
-rw-r--r--MediaBrowser.Common/Net/HttpResponseInfo.cs26
-rw-r--r--MediaBrowser.Common/Net/IHttpClient.cs21
-rw-r--r--MediaBrowser.Common/Net/INetworkManager.cs18
-rw-r--r--MediaBrowser.Common/Updates/IInstallationManager.cs21
8 files changed, 88 insertions, 100 deletions
diff --git a/MediaBrowser.Common/Extensions/HexHelper.cs b/MediaBrowser.Common/Extensions/HexHelper.cs
new file mode 100644
index 000000000..3d80d94ac
--- /dev/null
+++ b/MediaBrowser.Common/Extensions/HexHelper.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Globalization;
+
+namespace MediaBrowser.Common.Extensions
+{
+ public static class HexHelper
+ {
+ public static byte[] FromHexString(string str)
+ {
+ byte[] bytes = new byte[str.Length / 2];
+ for (int i = 0; i < str.Length; i += 2)
+ {
+ bytes[i / 2] = byte.Parse(str.Substring(i, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture);
+ }
+
+ return bytes;
+ }
+
+ public static string ToHexString(byte[] bytes)
+ => BitConverter.ToString(bytes).Replace("-", "");
+ }
+}
diff --git a/MediaBrowser.Common/IApplicationHost.cs b/MediaBrowser.Common/IApplicationHost.cs
index cb7343440..2248e9c85 100644
--- a/MediaBrowser.Common/IApplicationHost.cs
+++ b/MediaBrowser.Common/IApplicationHost.cs
@@ -75,10 +75,10 @@ namespace MediaBrowser.Common
/// <summary>
/// Gets the exports.
/// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="manageLiftime">if set to <c>true</c> [manage liftime].</param>
- /// <returns>IEnumerable{``0}.</returns>
- IEnumerable<T> GetExports<T>(bool manageLifetime = true);
+ /// <typeparam name="T">The type.</typeparam>
+ /// <param name="manageLifetime">If set to <c>true</c> [manage lifetime].</param>
+ /// <returns><see cref="IReadOnlyCollection{T}" />.</returns>
+ IReadOnlyCollection<T> GetExports<T>(bool manageLifetime = true);
/// <summary>
/// Resolves this instance.
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index 05b48a2a1..91ab066f9 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -23,6 +23,12 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <!-- We need at least C# 7.1 for the "default literal" feature-->
+ <LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
diff --git a/MediaBrowser.Common/Net/HttpRequestOptions.cs b/MediaBrowser.Common/Net/HttpRequestOptions.cs
index bea178517..94b972a02 100644
--- a/MediaBrowser.Common/Net/HttpRequestOptions.cs
+++ b/MediaBrowser.Common/Net/HttpRequestOptions.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Threading;
using Microsoft.Net.Http.Headers;
@@ -17,7 +16,7 @@ namespace MediaBrowser.Common.Net
/// <value>The URL.</value>
public string Url { get; set; }
- public CompressionMethod? DecompressionMethod { get; set; }
+ public CompressionMethod DecompressionMethod { get; set; }
/// <summary>
/// Gets or sets the accept header.
@@ -28,6 +27,7 @@ namespace MediaBrowser.Common.Net
get => GetHeaderValue(HeaderNames.Accept);
set => RequestHeaders[HeaderNames.Accept] = value;
}
+
/// <summary>
/// Gets or sets the cancellation token.
/// </summary>
@@ -35,12 +35,6 @@ namespace MediaBrowser.Common.Net
public CancellationToken CancellationToken { get; set; }
/// <summary>
- /// Gets or sets the resource pool.
- /// </summary>
- /// <value>The resource pool.</value>
- public SemaphoreSlim ResourcePool { get; set; }
-
- /// <summary>
/// Gets or sets the user agent.
/// </summary>
/// <value>The user agent.</value>
@@ -54,25 +48,21 @@ namespace MediaBrowser.Common.Net
/// Gets or sets the referrer.
/// </summary>
/// <value>The referrer.</value>
- public string Referer { get; set; }
+ public string Referer
+ {
+ get => GetHeaderValue(HeaderNames.Referer);
+ set => RequestHeaders[HeaderNames.Referer] = value;
+ }
/// <summary>
/// Gets or sets the host.
/// </summary>
/// <value>The host.</value>
- public string Host { get; set; }
-
- /// <summary>
- /// Gets or sets the progress.
- /// </summary>
- /// <value>The progress.</value>
- public IProgress<double> Progress { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether [enable HTTP compression].
- /// </summary>
- /// <value><c>true</c> if [enable HTTP compression]; otherwise, <c>false</c>.</value>
- public bool EnableHttpCompression { get; set; }
+ public string Host
+ {
+ get => GetHeaderValue(HeaderNames.Host);
+ set => RequestHeaders[HeaderNames.Host] = value;
+ }
public Dictionary<string, string> RequestHeaders { get; private set; }
@@ -83,24 +73,14 @@ namespace MediaBrowser.Common.Net
public bool BufferContent { get; set; }
- public bool LogRequest { get; set; }
- public bool LogRequestAsDebug { get; set; }
- public bool LogErrors { get; set; }
- public bool LogResponse { get; set; }
- public bool LogResponseHeaders { get; set; }
-
public bool LogErrorResponseBody { get; set; }
public bool EnableKeepAlive { get; set; }
public CacheMode CacheMode { get; set; }
public TimeSpan CacheLength { get; set; }
- public int TimeoutMs { get; set; }
public bool EnableDefaultUserAgent { get; set; }
- public bool AppendCharsetToMimeType { get; set; }
- public string DownloadFilePath { get; set; }
-
private string GetHeaderValue(string name)
{
RequestHeaders.TryGetValue(name, out var value);
@@ -113,24 +93,10 @@ namespace MediaBrowser.Common.Net
/// </summary>
public HttpRequestOptions()
{
- EnableHttpCompression = true;
-
RequestHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
- LogRequest = true;
- LogErrors = true;
CacheMode = CacheMode.None;
-
- TimeoutMs = 20000;
- }
-
- public void SetPostData(IDictionary<string, string> values)
- {
- var strings = values.Keys.Select(key => string.Format("{0}={1}", key, values[key]));
- var postContent = string.Join("&", strings.ToArray());
-
- RequestContent = postContent;
- RequestContentType = "application/x-www-form-urlencoded";
+ DecompressionMethod = CompressionMethod.Deflate;
}
}
@@ -140,9 +106,11 @@ namespace MediaBrowser.Common.Net
Unconditional = 1
}
+ [Flags]
public enum CompressionMethod
{
- Deflate,
- Gzip
+ None = 0b00000001,
+ Deflate = 0b00000010,
+ Gzip = 0b00000100
}
}
diff --git a/MediaBrowser.Common/Net/HttpResponseInfo.cs b/MediaBrowser.Common/Net/HttpResponseInfo.cs
index 186674167..d65ce897a 100644
--- a/MediaBrowser.Common/Net/HttpResponseInfo.cs
+++ b/MediaBrowser.Common/Net/HttpResponseInfo.cs
@@ -1,7 +1,7 @@
using System;
-using System.Collections.Generic;
using System.IO;
using System.Net;
+using System.Net.Http.Headers;
namespace MediaBrowser.Common.Net
{
@@ -50,26 +50,28 @@ namespace MediaBrowser.Common.Net
/// Gets or sets the headers.
/// </summary>
/// <value>The headers.</value>
- public Dictionary<string, string> Headers { get; set; }
+ public HttpResponseHeaders Headers { get; set; }
- private readonly IDisposable _disposable;
+ /// <summary>
+ /// Gets or sets the content headers.
+ /// </summary>
+ /// <value>The content headers.</value>
+ public HttpContentHeaders ContentHeaders { get; set; }
- public HttpResponseInfo(IDisposable disposable)
+ public HttpResponseInfo()
{
- _disposable = disposable;
- Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
}
- public HttpResponseInfo()
+
+ public HttpResponseInfo(HttpResponseHeaders headers, HttpContentHeaders contentHeader)
{
- Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ Headers = headers;
+ ContentHeaders = contentHeader;
}
public void Dispose()
{
- if (_disposable != null)
- {
- _disposable.Dispose();
- }
+ // Only IDisposable for backwards compatibility
}
}
}
diff --git a/MediaBrowser.Common/Net/IHttpClient.cs b/MediaBrowser.Common/Net/IHttpClient.cs
index 5aaf7e0be..d84a4d664 100644
--- a/MediaBrowser.Common/Net/IHttpClient.cs
+++ b/MediaBrowser.Common/Net/IHttpClient.cs
@@ -1,5 +1,6 @@
using System.IO;
using System.Threading.Tasks;
+using System.Net.Http;
namespace MediaBrowser.Common.Net
{
@@ -23,6 +24,8 @@ namespace MediaBrowser.Common.Net
Task<Stream> Get(HttpRequestOptions options);
/// <summary>
+ /// Warning: Deprecated function,
+ /// use 'Task<HttpResponseInfo> SendAsync(HttpRequestOptions options, HttpMethod httpMethod);' instead
/// Sends the asynchronous.
/// </summary>
/// <param name="options">The options.</param>
@@ -31,26 +34,18 @@ namespace MediaBrowser.Common.Net
Task<HttpResponseInfo> SendAsync(HttpRequestOptions options, string httpMethod);
/// <summary>
- /// Posts the specified options.
+ /// Sends the asynchronous.
/// </summary>
/// <param name="options">The options.</param>
+ /// <param name="httpMethod">The HTTP method.</param>
/// <returns>Task{HttpResponseInfo}.</returns>
- Task<HttpResponseInfo> Post(HttpRequestOptions options);
-
- /// <summary>
- /// Downloads the contents of a given url into a temporary location
- /// </summary>
- /// <param name="options">The options.</param>
- /// <returns>Task{System.String}.</returns>
- /// <exception cref="System.ArgumentNullException">progress</exception>
- /// <exception cref="Model.Net.HttpException"></exception>
- Task<string> GetTempFile(HttpRequestOptions options);
+ Task<HttpResponseInfo> SendAsync(HttpRequestOptions options, HttpMethod httpMethod);
/// <summary>
- /// Gets the temporary file response.
+ /// Posts the specified options.
/// </summary>
/// <param name="options">The options.</param>
/// <returns>Task{HttpResponseInfo}.</returns>
- Task<HttpResponseInfo> GetTempFileResponse(HttpRequestOptions options);
+ Task<HttpResponseInfo> Post(HttpRequestOptions options);
}
}
diff --git a/MediaBrowser.Common/Net/INetworkManager.cs b/MediaBrowser.Common/Net/INetworkManager.cs
index 34c6f5866..1df74d995 100644
--- a/MediaBrowser.Common/Net/INetworkManager.cs
+++ b/MediaBrowser.Common/Net/INetworkManager.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
-using System.Threading.Tasks;
+using System.Net;
+using System.Net.NetworkInformation;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
@@ -24,7 +25,7 @@ namespace MediaBrowser.Common.Net
/// Returns MAC Address from first Network Card in Computer
/// </summary>
/// <returns>[string] MAC Address</returns>
- List<string> GetMacAddresses();
+ List<PhysicalAddress> GetMacAddresses();
/// <summary>
/// Determines whether [is in private address space] [the specified endpoint].
@@ -53,17 +54,12 @@ namespace MediaBrowser.Common.Net
/// <returns><c>true</c> if [is in local network] [the specified endpoint]; otherwise, <c>false</c>.</returns>
bool IsInLocalNetwork(string endpoint);
- IpAddressInfo[] GetLocalIpAddresses(bool ignoreVirtualInterface);
-
- IpAddressInfo ParseIpAddress(string ipAddress);
-
- bool TryParseIpAddress(string ipAddress, out IpAddressInfo ipAddressInfo);
-
- Task<IpAddressInfo[]> GetHostAddressesAsync(string host);
+ IPAddress[] GetLocalIpAddresses(bool ignoreVirtualInterface);
bool IsAddressInSubnets(string addressString, string[] subnets);
- bool IsInSameSubnet(IpAddressInfo address1, IpAddressInfo address2, IpAddressInfo subnetMask);
- IpAddressInfo GetLocalIpSubnetMask(IpAddressInfo address);
+ bool IsInSameSubnet(IPAddress address1, IPAddress address2, IPAddress subnetMask);
+
+ IPAddress GetLocalIpSubnetMask(IPAddress address);
}
}
diff --git a/MediaBrowser.Common/Updates/IInstallationManager.cs b/MediaBrowser.Common/Updates/IInstallationManager.cs
index a263be35f..88ac7e473 100644
--- a/MediaBrowser.Common/Updates/IInstallationManager.cs
+++ b/MediaBrowser.Common/Updates/IInstallationManager.cs
@@ -16,11 +16,6 @@ namespace MediaBrowser.Common.Updates
event EventHandler<InstallationEventArgs> PackageInstallationCancelled;
/// <summary>
- /// The current installations
- /// </summary>
- List<Tuple<InstallationInfo, CancellationTokenSource>> CurrentInstallations { get; set; }
-
- /// <summary>
/// The completed installations
/// </summary>
IEnumerable<InstallationInfo> CompletedInstallations { get; }
@@ -33,7 +28,7 @@ namespace MediaBrowser.Common.Updates
/// <summary>
/// Occurs when [plugin updated].
/// </summary>
- event EventHandler<GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>>> PluginUpdated;
+ event EventHandler<GenericEventArgs<(IPlugin, PackageVersionInfo)>> PluginUpdated;
/// <summary>
/// Occurs when [plugin updated].
@@ -102,12 +97,9 @@ namespace MediaBrowser.Common.Updates
/// Installs the package.
/// </summary>
/// <param name="package">The package.</param>
- /// <param name="isPlugin">if set to <c>true</c> [is plugin].</param>
- /// <param name="progress">The progress.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">package</exception>
- Task InstallPackage(PackageVersionInfo package, bool isPlugin, IProgress<double> progress, CancellationToken cancellationToken);
+ /// <returns><see cref="Task" />.</returns>
+ Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken = default);
/// <summary>
/// Uninstalls a plugin
@@ -115,5 +107,12 @@ namespace MediaBrowser.Common.Updates
/// <param name="plugin">The plugin.</param>
/// <exception cref="ArgumentException"></exception>
void UninstallPlugin(IPlugin plugin);
+
+ /// <summary>
+ /// Cancels the installation
+ /// </summary>
+ /// <param name="id">The id of the package that is being installed</param>
+ /// <returns>Returns true if the install was cancelled</returns>
+ bool CancelInstallation(Guid id);
}
}