From 720065ef9e28896052cbcc1514ea35e068bda872 Mon Sep 17 00:00:00 2001 From: MW Date: Wed, 31 Oct 2007 09:26:06 +0000 Subject: forgotten file --- .../Framework/Servers/RestDeserialiseHandler.cs | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 OpenSim/Framework/Servers/RestDeserialiseHandler.cs diff --git a/OpenSim/Framework/Servers/RestDeserialiseHandler.cs b/OpenSim/Framework/Servers/RestDeserialiseHandler.cs new file mode 100644 index 0000000..cb500ca --- /dev/null +++ b/OpenSim/Framework/Servers/RestDeserialiseHandler.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +namespace OpenSim.Framework.Servers +{ + public delegate string RestDeserialiseMethod(TRequest request); + + public class RestDeserialisehandler : BaseStreamHandler + where TRequest : new() + { + private RestDeserialiseMethod m_method; + + public RestDeserialisehandler(string httpMethod, string path, RestDeserialiseMethod method) + : base(httpMethod, path) + { + m_method = method; + } + + public override byte[] Handle(string path, Stream request) + { + Type type = typeof(TRequest); + + TRequest deserial= default(TRequest); + using (XmlTextReader xreader = new XmlTextReader(request)) + { + XmlSerializer serializer = new XmlSerializer(type); + deserial = (TRequest)serializer.Deserialize(xreader); + } + + string response = m_method(deserial); + + Encoding encoding = new UTF8Encoding(false); + return encoding.GetBytes(response); + + } + } +} -- cgit v1.1