aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/Service
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-29 18:34:54 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-29 18:34:54 -0400
commit7d58ee93449de2f91b899b0b0fe19aa03af38f6b (patch)
treeb31c5307eef2a242e4210d9e5ea88f9bba0590ac /MediaBrowser.Dlna/Service
parentdca78b13411db96366dddfa0d68bb6d36d28ad14 (diff)
rework dlna project
Diffstat (limited to 'MediaBrowser.Dlna/Service')
-rw-r--r--MediaBrowser.Dlna/Service/BaseControlHandler.cs137
-rw-r--r--MediaBrowser.Dlna/Service/BaseService.cs37
-rw-r--r--MediaBrowser.Dlna/Service/ControlErrorHandler.cs41
-rw-r--r--MediaBrowser.Dlna/Service/ServiceXmlBuilder.cs90
4 files changed, 0 insertions, 305 deletions
diff --git a/MediaBrowser.Dlna/Service/BaseControlHandler.cs b/MediaBrowser.Dlna/Service/BaseControlHandler.cs
deleted file mode 100644
index c5de76eb5f..0000000000
--- a/MediaBrowser.Dlna/Service/BaseControlHandler.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Dlna;
-using MediaBrowser.Dlna.Server;
-using MediaBrowser.Model.Logging;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Xml;
-
-namespace MediaBrowser.Dlna.Service
-{
- public abstract class BaseControlHandler
- {
- private const string NS_SOAPENV = "http://schemas.xmlsoap.org/soap/envelope/";
-
- protected readonly IServerConfigurationManager Config;
- protected readonly ILogger Logger;
-
- protected BaseControlHandler(IServerConfigurationManager config, ILogger logger)
- {
- Config = config;
- Logger = logger;
- }
-
- public ControlResponse ProcessControlRequest(ControlRequest request)
- {
- try
- {
- var enableDebugLogging = Config.GetDlnaConfiguration().EnableDebugLog;
-
- if (enableDebugLogging)
- {
- LogRequest(request);
- }
-
- var response = ProcessControlRequestInternal(request);
-
- if (enableDebugLogging)
- {
- LogResponse(response);
- }
-
- return response;
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error processing control request", ex);
-
- return new ControlErrorHandler().GetResponse(ex);
- }
- }
-
- private ControlResponse ProcessControlRequestInternal(ControlRequest request)
- {
- var soap = new XmlDocument();
- soap.LoadXml(request.InputXml);
- var sparams = new Headers();
- var body = soap.GetElementsByTagName("Body", NS_SOAPENV).Item(0);
-
- var method = body.FirstChild;
-
- foreach (var p in method.ChildNodes)
- {
- var e = p as XmlElement;
- if (e == null)
- {
- continue;
- }
- sparams.Add(e.LocalName, e.InnerText.Trim());
- }
-
- Logger.Debug("Received control request {0}", method.LocalName);
-
- var result = GetResult(method.LocalName, sparams);
-
- var env = new XmlDocument();
- env.AppendChild(env.CreateXmlDeclaration("1.0", "utf-8", string.Empty));
- var envelope = env.CreateElement("SOAP-ENV", "Envelope", NS_SOAPENV);
- env.AppendChild(envelope);
- envelope.SetAttribute("encodingStyle", NS_SOAPENV, "http://schemas.xmlsoap.org/soap/encoding/");
-
- var rbody = env.CreateElement("SOAP-ENV:Body", NS_SOAPENV);
- env.DocumentElement.AppendChild(rbody);
-
- var response = env.CreateElement(String.Format("u:{0}Response", method.LocalName), method.NamespaceURI);
- rbody.AppendChild(response);
-
- foreach (var i in result)
- {
- var ri = env.CreateElement(i.Key);
- ri.InnerText = i.Value;
- response.AppendChild(ri);
- }
-
- var xml = env.OuterXml.Replace("xmlns:m=", "xmlns:u=");
-
- var controlResponse = new ControlResponse
- {
- Xml = xml,
- IsSuccessful = true
- };
-
- //Logger.Debug(xml);
-
- controlResponse.Headers.Add("EXT", string.Empty);
-
- return controlResponse;
- }
-
- protected abstract IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, Headers methodParams);
-
- private void LogRequest(ControlRequest request)
- {
- var builder = new StringBuilder();
-
- var headers = string.Join(", ", request.Headers.Select(i => string.Format("{0}={1}", i.Key, i.Value)).ToArray());
- builder.AppendFormat("Headers: {0}", headers);
- builder.AppendLine();
- builder.Append(request.InputXml);
-
- Logger.LogMultiline("Control request", LogSeverity.Debug, builder);
- }
-
- private void LogResponse(ControlResponse response)
- {
- var builder = new StringBuilder();
-
- var headers = string.Join(", ", response.Headers.Select(i => string.Format("{0}={1}", i.Key, i.Value)).ToArray());
- builder.AppendFormat("Headers: {0}", headers);
- builder.AppendLine();
- builder.Append(response.Xml);
-
- Logger.LogMultiline("Control response", LogSeverity.Debug, builder);
- }
- }
-}
diff --git a/MediaBrowser.Dlna/Service/BaseService.cs b/MediaBrowser.Dlna/Service/BaseService.cs
deleted file mode 100644
index aeea7b8f34..0000000000
--- a/MediaBrowser.Dlna/Service/BaseService.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.Dlna;
-using MediaBrowser.Dlna.Eventing;
-using MediaBrowser.Model.Logging;
-
-namespace MediaBrowser.Dlna.Service
-{
- public class BaseService : IEventManager
- {
- protected IEventManager EventManager;
- protected IHttpClient HttpClient;
- protected ILogger Logger;
-
- protected BaseService(ILogger logger, IHttpClient httpClient)
- {
- Logger = logger;
- HttpClient = httpClient;
-
- EventManager = new EventManager(Logger, HttpClient);
- }
-
- public EventSubscriptionResponse CancelEventSubscription(string subscriptionId)
- {
- return EventManager.CancelEventSubscription(subscriptionId);
- }
-
- public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds)
- {
- return EventManager.RenewEventSubscription(subscriptionId, timeoutSeconds);
- }
-
- public EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl)
- {
- return EventManager.CreateEventSubscription(notificationType, timeoutSeconds, callbackUrl);
- }
- }
-}
diff --git a/MediaBrowser.Dlna/Service/ControlErrorHandler.cs b/MediaBrowser.Dlna/Service/ControlErrorHandler.cs
deleted file mode 100644
index 42b1fcbc99..0000000000
--- a/MediaBrowser.Dlna/Service/ControlErrorHandler.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using MediaBrowser.Controller.Dlna;
-using System;
-using System.Xml;
-
-namespace MediaBrowser.Dlna.Service
-{
- public class ControlErrorHandler
- {
- private const string NS_SOAPENV = "http://schemas.xmlsoap.org/soap/envelope/";
-
- public ControlResponse GetResponse(Exception ex)
- {
- var env = new XmlDocument();
- env.AppendChild(env.CreateXmlDeclaration("1.0", "utf-8", "yes"));
- var envelope = env.CreateElement("SOAP-ENV", "Envelope", NS_SOAPENV);
- env.AppendChild(envelope);
- envelope.SetAttribute("encodingStyle", NS_SOAPENV, "http://schemas.xmlsoap.org/soap/encoding/");
-
- var rbody = env.CreateElement("SOAP-ENV:Body", NS_SOAPENV);
- env.DocumentElement.AppendChild(rbody);
-
- var fault = env.CreateElement("SOAP-ENV", "Fault", NS_SOAPENV);
- var faultCode = env.CreateElement("faultcode");
- faultCode.InnerText = "500";
- fault.AppendChild(faultCode);
- var faultString = env.CreateElement("faultstring");
- faultString.InnerText = ex.ToString();
- fault.AppendChild(faultString);
- var detail = env.CreateDocumentFragment();
- detail.InnerXml = "<detail><UPnPError xmlns=\"urn:schemas-upnp-org:control-1-0\"><errorCode>401</errorCode><errorDescription>Invalid Action</errorDescription></UPnPError></detail>";
- fault.AppendChild(detail);
- rbody.AppendChild(fault);
-
- return new ControlResponse
- {
- Xml = env.OuterXml,
- IsSuccessful = false
- };
- }
- }
-}
diff --git a/MediaBrowser.Dlna/Service/ServiceXmlBuilder.cs b/MediaBrowser.Dlna/Service/ServiceXmlBuilder.cs
deleted file mode 100644
index fae604f85c..0000000000
--- a/MediaBrowser.Dlna/Service/ServiceXmlBuilder.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using MediaBrowser.Dlna.Common;
-using System.Collections.Generic;
-using System.Security;
-using System.Text;
-
-namespace MediaBrowser.Dlna.Service
-{
- public class ServiceXmlBuilder
- {
- public string GetXml(IEnumerable<ServiceAction> actions, IEnumerable<StateVariable> stateVariables)
- {
- var builder = new StringBuilder();
-
- builder.Append("<?xml version=\"1.0\"?>");
- builder.Append("<scpd xmlns=\"urn:schemas-upnp-org:service-1-0\">");
-
- builder.Append("<specVersion>");
- builder.Append("<major>1</major>");
- builder.Append("<minor>0</minor>");
- builder.Append("</specVersion>");
-
- AppendActionList(builder, actions);
- AppendServiceStateTable(builder, stateVariables);
-
- builder.Append("</scpd>");
-
- return builder.ToString();
- }
-
- private void AppendActionList(StringBuilder builder, IEnumerable<ServiceAction> actions)
- {
- builder.Append("<actionList>");
-
- foreach (var item in actions)
- {
- builder.Append("<action>");
-
- builder.Append("<name>" + SecurityElement.Escape(item.Name ?? string.Empty) + "</name>");
-
- builder.Append("<argumentList>");
-
- foreach (var argument in item.ArgumentList)
- {
- builder.Append("<argument>");
-
- builder.Append("<name>" + SecurityElement.Escape(argument.Name ?? string.Empty) + "</name>");
- builder.Append("<direction>" + SecurityElement.Escape(argument.Direction ?? string.Empty) + "</direction>");
- builder.Append("<relatedStateVariable>" + SecurityElement.Escape(argument.RelatedStateVariable ?? string.Empty) + "</relatedStateVariable>");
-
- builder.Append("</argument>");
- }
-
- builder.Append("</argumentList>");
-
- builder.Append("</action>");
- }
-
- builder.Append("</actionList>");
- }
-
- private void AppendServiceStateTable(StringBuilder builder, IEnumerable<StateVariable> stateVariables)
- {
- builder.Append("<serviceStateTable>");
-
- foreach (var item in stateVariables)
- {
- var sendEvents = item.SendsEvents ? "yes" : "no";
-
- builder.Append("<stateVariable sendEvents=\"" + sendEvents + "\">");
-
- builder.Append("<name>" + SecurityElement.Escape(item.Name ?? string.Empty) + "</name>");
- builder.Append("<dataType>" + SecurityElement.Escape(item.DataType ?? string.Empty) + "</dataType>");
-
- if (item.AllowedValues.Count > 0)
- {
- builder.Append("<allowedValueList>");
- foreach (var allowedValue in item.AllowedValues)
- {
- builder.Append("<allowedValue>" + SecurityElement.Escape(allowedValue) + "</allowedValue>");
- }
- builder.Append("</allowedValueList>");
- }
-
- builder.Append("</stateVariable>");
- }
-
- builder.Append("</serviceStateTable>");
- }
- }
-}