aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/Service/ControlErrorHandler.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-20 20:56:24 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-20 20:56:24 -0400
commit1774e5b1ac9f809fd97c1d95666fc563afa87914 (patch)
treef0c2c3f84de84def4f9e80d1f187069e4763f496 /MediaBrowser.Dlna/Service/ControlErrorHandler.cs
parentad3c30c14535780fcbd11b049603991e8d3cfe9e (diff)
added upnp ConnectionManager.cs
Diffstat (limited to 'MediaBrowser.Dlna/Service/ControlErrorHandler.cs')
-rw-r--r--MediaBrowser.Dlna/Service/ControlErrorHandler.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/MediaBrowser.Dlna/Service/ControlErrorHandler.cs b/MediaBrowser.Dlna/Service/ControlErrorHandler.cs
new file mode 100644
index 000000000..42b1fcbc9
--- /dev/null
+++ b/MediaBrowser.Dlna/Service/ControlErrorHandler.cs
@@ -0,0 +1,41 @@
+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
+ };
+ }
+ }
+}