Cleanup some small things

This commit is contained in:
Bond_009
2019-01-06 20:35:36 +01:00
parent b27315bc08
commit 07a8e49c4b
8 changed files with 77 additions and 150 deletions

View File

@@ -1,27 +1,28 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Net;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Emby.Server.Implementations.Net;
using Emby.Server.Implementations.Services;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Security;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Services;
using MediaBrowser.Model.Text;
using System.Net.Sockets;
using Emby.Server.Implementations.Net;
using MediaBrowser.Model.Events;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
@@ -55,40 +56,33 @@ namespace Emby.Server.Implementations.HttpServer
private IWebSocketListener[] _webSocketListeners = Array.Empty<IWebSocketListener>();
private readonly List<IWebSocketConnection> _webSocketConnections = new List<IWebSocketConnection>();
public HttpListenerHost(IServerApplicationHost applicationHost,
public HttpListenerHost(
IServerApplicationHost applicationHost,
ILogger logger,
IServerConfigurationManager config,
string defaultRedirectPath, INetworkManager networkManager, ITextEncoding textEncoding, IJsonSerializer jsonSerializer, IXmlSerializer xmlSerializer, Func<Type, Func<string, object>> funcParseFn)
string defaultRedirectPath,
INetworkManager networkManager,
ITextEncoding textEncoding,
IJsonSerializer jsonSerializer,
IXmlSerializer xmlSerializer,
Func<Type, Func<string, object>> funcParseFn)
{
Instance = this;
_appHost = applicationHost;
_logger = logger;
_config = config;
DefaultRedirectPath = defaultRedirectPath;
_networkManager = networkManager;
_textEncoding = textEncoding;
_jsonSerializer = jsonSerializer;
_xmlSerializer = xmlSerializer;
_config = config;
_logger = logger;
_funcParseFn = funcParseFn;
ResponseFilters = new Action<IRequest, IResponse, object>[] { };
Instance = this;
ResponseFilters = Array.Empty<Action<IRequest, IResponse, object>>();
}
public string GlobalResponse { get; set; }
readonly Dictionary<Type, int> _mapExceptionToStatusCode = new Dictionary<Type, int>
{
{typeof (ResourceNotFoundException), 404},
{typeof (RemoteServiceUnavailableException), 502},
{typeof (FileNotFoundException), 404},
//{typeof (DirectoryNotFoundException), 404},
{typeof (SecurityException), 401},
{typeof (PaymentRequiredException), 402},
{typeof (ArgumentException), 400}
};
protected ILogger Logger
{
get
@@ -111,9 +105,9 @@ namespace Emby.Server.Implementations.HttpServer
{
//Exec all RequestFilter attributes with Priority < 0
var attributes = GetRequestFilterAttributes(requestDto.GetType());
var i = 0;
var count = attributes.Count;
int count = attributes.Count;
int i = 0;
for (; i < count && attributes[i].Priority < 0; i++)
{
var attribute = attributes[i];
@@ -176,10 +170,7 @@ namespace Emby.Server.Implementations.HttpServer
_webSocketConnections.Add(connection);
}
if (WebSocketConnected != null)
{
WebSocketConnected?.Invoke(this, new GenericEventArgs<IWebSocketConnection>(connection));
}
WebSocketConnected?.Invoke(this, new GenericEventArgs<IWebSocketConnection>(connection));
}
private void Connection_Closed(object sender, EventArgs e)
@@ -192,8 +183,7 @@ namespace Emby.Server.Implementations.HttpServer
private Exception GetActualException(Exception ex)
{
var agg = ex as AggregateException;
if (agg != null)
if (ex is AggregateException agg)
{
var inner = agg.InnerException;
if (inner != null)
@@ -215,27 +205,17 @@ namespace Emby.Server.Implementations.HttpServer
private int GetStatusCode(Exception ex)
{
if (ex is ArgumentException)
switch (ex)
{
return 400;
case ArgumentException _: return 400;
case SecurityException _: return 401;
case PaymentRequiredException _: return 402;
case DirectoryNotFoundException _:
case FileNotFoundException _:
case ResourceNotFoundException _: return 404;
case RemoteServiceUnavailableException _: return 502;
default: return 500;
}
var exceptionType = ex.GetType();
int statusCode;
if (!_mapExceptionToStatusCode.TryGetValue(exceptionType, out statusCode))
{
if (ex is DirectoryNotFoundException)
{
statusCode = 404;
}
else
{
statusCode = 500;
}
}
return statusCode;
}
private async Task ErrorHandler(Exception ex, IRequest httpReq, bool logExceptionStackTrace, bool logExceptionMessage)
@@ -321,29 +301,22 @@ namespace Emby.Server.Implementations.HttpServer
}
}
private readonly Dictionary<string, int> _skipLogExtensions = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
private static readonly string[] _skipLogExtensions =
{
{".js", 0},
{".css", 0},
{".woff", 0},
{".woff2", 0},
{".ttf", 0},
{".html", 0}
".js",
".css",
".woff",
".woff2",
".ttf",
".html"
};
private bool EnableLogging(string url, string localPath)
{
var extension = GetExtension(url);
if (string.IsNullOrEmpty(extension) || !_skipLogExtensions.ContainsKey(extension))
{
if (string.IsNullOrEmpty(localPath) || localPath.IndexOf("system/ping", StringComparison.OrdinalIgnoreCase) == -1)
{
return true;
}
}
return false;
return ((string.IsNullOrEmpty(extension) || !_skipLogExtensions.Contains(extension))
&& (string.IsNullOrEmpty(localPath) || localPath.IndexOf("system/ping", StringComparison.OrdinalIgnoreCase) == -1));
}
private string GetExtension(string url)
@@ -566,9 +539,7 @@ namespace Emby.Server.Implementations.HttpServer
return;
}
if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase) ||
string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase) ||
localPath.IndexOf("mediabrowser/web", StringComparison.OrdinalIgnoreCase) != -1)
if (localPath.IndexOf("mediabrowser/web", StringComparison.OrdinalIgnoreCase) != -1)
{
httpRes.StatusCode = 200;
httpRes.ContentType = "text/html";
@@ -723,7 +694,7 @@ namespace Emby.Server.Implementations.HttpServer
};
}
_logger.LogError("Could not find handler for {pathInfo}", pathInfo);
_logger.LogError("Could not find handler for {PathInfo}", pathInfo);
return null;
}
@@ -737,14 +708,13 @@ namespace Emby.Server.Implementations.HttpServer
private void RedirectToSecureUrl(IHttpRequest httpReq, IResponse httpRes, string url)
{
int currentPort;
Uri uri;
if (Uri.TryCreate(url, UriKind.Absolute, out uri))
if (Uri.TryCreate(url, UriKind.Absolute, out Uri uri))
{
currentPort = uri.Port;
var builder = new UriBuilder(uri);
builder.Port = _config.Configuration.PublicHttpsPort;
builder.Scheme = "https";
var builder = new UriBuilder(uri)
{
Port = _config.Configuration.PublicHttpsPort,
Scheme = "https"
};
url = builder.Uri.ToString();
RedirectToUrl(httpRes, url);
@@ -844,12 +814,6 @@ namespace Emby.Server.Implementations.HttpServer
public Task<object> DeserializeJson(Type type, Stream stream)
{
//using (var reader = new StreamReader(stream))
//{
// var json = reader.ReadToEnd();
// logger.LogInformation(json);
// return _jsonSerializer.DeserializeFromString(json, type);
//}
return _jsonSerializer.DeserializeFromStreamAsync(stream, type);
}