Example #1
0
        /// <summary>
        /// Serializes an XML-RPC response to a response stream.
        /// </summary>
        /// <param name="responseStream">the <see cref="System.IO.Stream"/> to write</param>
        /// <param name="response">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcResponse"/> to serialize</param>
        /// <param name="config">the context configuration</param>
        /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param>
        /// <exception cref="System.Xml.XmlException">failed writing the response XML</exception>
        public void WriteResponse(Stream responseStream, IXmlRpcResponse response, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
        {
            XmlWriter writer = _xmlWriterFactory.GetXmlWriter(config, responseStream);

            WriteResponse(writer, response, config, typeSerializerFactory);
            writer.Flush();
        }
        private void HandlePOST(HttpRequest request, HttpResponse response)
        {
            response.ContentType = "text/xml";
            IXmlRpcStreamRequestConfig config = GetConfig(request);

            Execute(config, new HttpStream(request, response));
        }
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected virtual Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     Stream outputStream = serverStream.OutputStream;
     if (config.EnabledForExtensions && config.GzipRequesting)
         return new GZipStream(outputStream, CompressionMode.Compress);
     else
         return outputStream;
 }
 /// <summary>
 /// Gets input stream.
 /// </summary>
 protected virtual Stream GetInputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     Stream inputStream = serverStream.InputStream;
     if (config.EnabledForExtensions && config.GzipCompressing)
         return new GZipStream(inputStream, CompressionMode.Decompress);
     else
         return inputStream;
 }
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected override Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     if (config.EnabledForExtensions && config.GzipRequesting)
     {
         SetResponseHeader(serverStream, HttpHelper.ContentEncodingHeader, "gzip");
     }
     return(base.GetOutputStream(config, serverStream));
 }
Example #6
0
        private void WriteResponse(IXmlRpcStreamRequestConfig config, Stream outputStream, IXmlRpcResponse response)
        {
            XmlRpcResponseSerializer serializer = new XmlRpcResponseSerializer();

            if (_xmlWriterFactory != null)
            {
                serializer.XmlWriterFactory = _xmlWriterFactory;
            }
            serializer.WriteResponse(outputStream, response, config, TypeSerializerFactory);
        }
Example #7
0
        /// <summary>
        /// Gets input stream.
        /// </summary>
        protected virtual Stream GetInputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream inputStream = serverStream.InputStream;

            if (config.EnabledForExtensions && config.GzipCompressing)
            {
                return(new GZipStream(inputStream, CompressionMode.Decompress));
            }
            else
            {
                return(inputStream);
            }
        }
Example #8
0
        /// <summary>
        /// Gets output stream.
        /// </summary>
        protected virtual Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream outputStream = serverStream.OutputStream;

            if (config.EnabledForExtensions && config.GzipRequesting)
            {
                return(new GZipStream(outputStream, CompressionMode.Compress));
            }
            else
            {
                return(outputStream);
            }
        }
        /// <summary>
        /// Serializes an XML-RPC response to a <see cref="System.Xml.XmlWriter"/>.
        /// </summary>
        /// <param name="writer">the <see cref="System.Xml.XmlWriter"/> to write</param>
        /// <param name="response">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcResponse"/> to serialize</param>
        /// <param name="config">the context configuration</param>
        /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param>
        /// <exception cref="System.Xml.XmlException">failed writing the response XML</exception>
        public void WriteResponse(XmlWriter writer, IXmlRpcResponse response, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
        {
            writer.WriteStartDocument();
            writer.WriteStartElement(XmlRpcSpec.METHOD_RESPONSE_TAG);

            if (response.Fault == null)
                RecursiveTypeSerializer.WriteParams(writer, config, typeSerializerFactory, response.Result);
            else
                WriteFaultResponse(writer, response.Fault, config, typeSerializerFactory);

            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
Example #10
0
        /// <summary>
        /// Serializes an XML-RPC response to a <see cref="System.Xml.XmlWriter"/>.
        /// </summary>
        /// <param name="writer">the <see cref="System.Xml.XmlWriter"/> to write</param>
        /// <param name="response">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcResponse"/> to serialize</param>
        /// <param name="config">the context configuration</param>
        /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param>
        /// <exception cref="System.Xml.XmlException">failed writing the response XML</exception>
        public void WriteResponse(XmlWriter writer, IXmlRpcResponse response, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
        {
            writer.WriteStartDocument();
            writer.WriteStartElement(XmlRpcSpec.METHOD_RESPONSE_TAG);

            if (response.Fault == null)
            {
                RecursiveTypeSerializer.WriteParams(writer, config, typeSerializerFactory, response.Result);
            }
            else
            {
                WriteFaultResponse(writer, response.Fault, config, typeSerializerFactory);
            }

            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
Example #11
0
        private static void WriteFaultResponse(XmlWriter writer, IXmlRpcFault fault, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
        {
            writer.WriteStartElement(XmlRpcSpec.FAULT_TAG);

            ArrayList nestvedObjs = new ArrayList();

            if (config != null && config.EnabledForExceptions)
            {
                Hashtable   ht  = new Hashtable(3);
                XmlRpcFault xpf = fault as XmlRpcFault;
                ht.Add(XmlRpcSpec.FAULT_CODE_TAG, fault.FaultCode);
                ht.Add(XmlRpcSpec.FAULT_STRING_TAG, fault.FaultString);
                ht.Add("faultCause", fault is XmlRpcFault ? ((XmlRpcFault)fault).Exception : null);
                RecursiveTypeSerializer.WriteValue(writer, ht, config, typeSerializerFactory, nestvedObjs);
            }
            else
            {
                RecursiveTypeSerializer.WriteValue(writer, fault, config, typeSerializerFactory, nestvedObjs);
            }

            writer.WriteEndElement();
        }
        /// <summary>
        /// Executes requests from streams.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="serverStream">the <see cref="IServerStream"/> to process</param>
        public void Execute(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream inputStream;
            XmlRpcResponse response = new XmlRpcResponse();

            try
            {
                inputStream = GetInputStream(config, serverStream);
                IXmlRpcRequest request = GetRequest(config, inputStream);
                response.Result = Execute(request);
            }
            catch (XmlRpcException ex)
            {
                response.Fault = ex.Fault;
            }
            catch (Exception ex)
            {
                response.Fault = new XmlRpcFault(0, ex.Message, ex);
            }

            Stream outputStream = GetOutputStream(config, serverStream);
            WriteResponse(config, outputStream, response);
        }
Example #13
0
        /// <summary>
        /// Executes requests from streams.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="serverStream">the <see cref="IServerStream"/> to process</param>
        public void Execute(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream         inputStream;
            XmlRpcResponse response = new XmlRpcResponse();

            try
            {
                inputStream = GetInputStream(config, serverStream);
                IXmlRpcRequest request = GetRequest(config, inputStream);
                response.Result = Execute(request);
            }
            catch (XmlRpcException ex)
            {
                response.Fault = ex.Fault;
            }
            catch (Exception ex)
            {
                response.Fault = new XmlRpcFault(0, ex.Message, ex);
            }

            Stream outputStream = GetOutputStream(config, serverStream);

            WriteResponse(config, outputStream, response);
        }
 /// <summary>
 /// Serializes an XML-RPC response to a response stream.
 /// </summary>
 /// <param name="responseStream">the <see cref="System.IO.Stream"/> to write</param>
 /// <param name="response">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcResponse"/> to serialize</param>
 /// <param name="config">the context configuration</param>
 /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param>
 /// <exception cref="System.Xml.XmlException">failed writing the response XML</exception>
 public void WriteResponse(Stream responseStream, IXmlRpcResponse response, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
 {
     XmlWriter writer = _xmlWriterFactory.GetXmlWriter(config, responseStream);
     WriteResponse(writer, response, config, typeSerializerFactory);
     writer.Flush();
 }
Example #15
0
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected override Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     if (config.EnabledForExtensions && config.GzipRequesting)
         SetResponseHeader(serverStream, HttpHelper.ContentEncodingHeader, "gzip");
     return base.GetOutputStream(config, serverStream);
 }
 private void WriteResponse(IXmlRpcStreamRequestConfig config, Stream outputStream, IXmlRpcResponse response)
 {
     XmlRpcResponseSerializer serializer = new XmlRpcResponseSerializer();
     if (_xmlWriterFactory != null)
         serializer.XmlWriterFactory = _xmlWriterFactory;
     serializer.WriteResponse(outputStream, response, config, TypeSerializerFactory);
 }
Example #17
0
        private MethodCall DeserializeRequest(ITransportHeaders requestHeaders, Stream requestStream, IXmlRpcStreamRequestConfig config)
        {
            String requestUri = GetRequestUri(requestHeaders);
            Type   svcType    = GetServerTypeForUri(requestUri);

            if (!_mapping.Has(svcType))
            {
                _mapping.Register(svcType);
            }
            IXmlRpcRequest request = GetRequest(config, requestStream);
            IXmlRpcHandler handler = GetHandler(request);

            Header[]   headers = GetChannelHeaders(requestUri, request, handler, svcType);
            MethodCall call    = new MethodCall(headers);

            call.ResolveMethod();
            return(call);
        }
Example #18
0
        private IXmlRpcRequest GetRequest(IXmlRpcStreamRequestConfig config, Stream inputStream)
        {
            XmlRpcRequestSerializer parser = new XmlRpcRequestSerializer();

            return(parser.ReadRequest(new XmlTextReader(inputStream), config, TypeSerializerFactory));
        }
Example #19
0
        private void SerializeResponse(IMessage responseMsg, ref ITransportHeaders responseHeaders, ref Stream responseStream, IXmlRpcStreamRequestConfig config)
        {
            XmlRpcResponseSerializer serializer = new XmlRpcResponseSerializer();

            responseStream  = new MemoryStream();
            responseHeaders = new TransportHeaders();

            ReturnMessage  retMsg = (ReturnMessage)responseMsg;
            XmlRpcResponse response;

            if (retMsg.Exception == null)
            {
                response = new XmlRpcResponse(retMsg.ReturnValue);
            }
            else if (retMsg.Exception is XmlRpcException)
            {
                response       = new XmlRpcResponse();
                response.Fault = (retMsg.Exception as XmlRpcException).Fault;
            }
            else
            {
                response       = new XmlRpcResponse();
                response.Fault = new XmlRpcFault(1, retMsg.Exception.Message);
            }
            serializer.WriteResponse(responseStream, response, config, TypeSerializerFactory);
            responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
        }
 private MethodCall DeserializeRequest(ITransportHeaders requestHeaders, Stream requestStream, IXmlRpcStreamRequestConfig config)
 {
     String requestUri = GetRequestUri(requestHeaders);
     Type svcType = GetServerTypeForUri(requestUri);
     if (!_mapping.Has(svcType))
         _mapping.Register(svcType);
     IXmlRpcRequest request = GetRequest(config, requestStream);
     IXmlRpcHandler handler = GetHandler(request);
     Header[] headers = GetChannelHeaders(requestUri, request, handler, svcType);
     MethodCall call = new MethodCall(headers);
     call.ResolveMethod();
     return call;
 }
 private  IXmlRpcRequest GetRequest(IXmlRpcStreamRequestConfig config, Stream inputStream)
 {
     XmlRpcRequestSerializer parser = new XmlRpcRequestSerializer();
     return parser.ReadRequest(inputStream, config, TypeSerializerFactory);
 }
        private void SerializeResponse(IMessage responseMsg, ref ITransportHeaders responseHeaders, ref Stream responseStream, IXmlRpcStreamRequestConfig config)
        {
            XmlRpcResponseSerializer serializer = new XmlRpcResponseSerializer();
            responseStream = new MemoryStream();
            responseHeaders = new TransportHeaders();

            ReturnMessage retMsg = (ReturnMessage)responseMsg;
            XmlRpcResponse response;
            if (retMsg.Exception == null)
            {
                response = new XmlRpcResponse(retMsg.ReturnValue);
            }
            else if (retMsg.Exception is XmlRpcException)
            {
                response = new XmlRpcResponse();
                response.Fault = (retMsg.Exception as XmlRpcException).Fault;
            }
            else
            {
                response = new XmlRpcResponse();
                response.Fault = new XmlRpcFault(1, retMsg.Exception.Message);
            }
            serializer.WriteResponse(responseStream, response, config, TypeSerializerFactory);
            responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
        }
        private static void WriteFaultResponse(XmlWriter writer, IXmlRpcFault fault, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory)
        {
            writer.WriteStartElement(XmlRpcSpec.FAULT_TAG);

            ArrayList nestvedObjs = new ArrayList();
            if (config != null && config.EnabledForExceptions)
            {
                Hashtable ht = new Hashtable(3);
                XmlRpcFault xpf = fault as XmlRpcFault;
                ht.Add(XmlRpcSpec.FAULT_CODE_TAG, fault.FaultCode);
                ht.Add(XmlRpcSpec.FAULT_STRING_TAG, fault.FaultString);
                ht.Add("faultCause", fault is XmlRpcFault ? ((XmlRpcFault)fault).Exception : null);
                RecursiveTypeSerializer.WriteValue(writer, ht, config, typeSerializerFactory, nestvedObjs);
            }
            else
            {
                RecursiveTypeSerializer.WriteValue(writer, fault, config, typeSerializerFactory, nestvedObjs);
            }

            writer.WriteEndElement();
        }