Пример #1
0
 private IXmlRpcStreamRequestConfig GetConfig(HttpRequest request)
 {
     XmlRpcHttpRequestConfig rc = new XmlRpcHttpRequestConfig();
     IXmlRpcHttpServerConfig serverConfig = (IXmlRpcHttpServerConfig)Config;
     rc.BasicEncoding = serverConfig.BasicEncoding;
     rc.ContentLengthOptional = serverConfig.ContentLengthOptional && (request.Headers[HttpHelper.ContentLengthHeader] == null);
     rc.EnabledForExtensions = serverConfig.EnabledForExtensions;
     rc.GzipCompressing = HttpHelper.HasGzipEncoding(request.Headers[HttpHelper.ContentEncodingHeader]);
     rc.GzipRequesting = HttpHelper.HasGzipEncoding(request.Headers[HttpHelper.AcceptEncodingHeader]);
     rc.Encoding = request.ContentEncoding.WebName;
     rc.EnabledForExceptions = serverConfig.EnabledForExceptions;
     HttpHelper.ParseAuthorization(rc, request.Headers[HttpHelper.AuthorizationHeader]);
     return rc;
 }
Пример #2
0
        private IXmlRpcStreamRequestConfig GetConfig(HttpRequest request)
        {
            XmlRpcHttpRequestConfig rc           = new XmlRpcHttpRequestConfig();
            IXmlRpcHttpServerConfig serverConfig = (IXmlRpcHttpServerConfig)Config;

            rc.BasicEncoding         = serverConfig.BasicEncoding;
            rc.ContentLengthOptional = serverConfig.ContentLengthOptional && (request.Headers[HttpHelper.ContentLengthHeader] == null);
            rc.EnabledForExtensions  = serverConfig.EnabledForExtensions;
            rc.GzipCompressing       = HttpHelper.HasGzipEncoding(request.Headers[HttpHelper.ContentEncodingHeader]);
            rc.GzipRequesting        = HttpHelper.HasGzipEncoding(request.Headers[HttpHelper.AcceptEncodingHeader]);
            rc.Encoding             = request.ContentEncoding.WebName;
            rc.EnabledForExceptions = serverConfig.EnabledForExceptions;
            HttpHelper.ParseAuthorization(rc, request.Headers[HttpHelper.AuthorizationHeader]);
            return(rc);
        }
Пример #3
0
        private XmlRpcHttpRequestConfig GetConfig(ITransportHeaders requestHeaders)
        {
            XmlRpcHttpRequestConfig rc           = new XmlRpcHttpRequestConfig();
            IXmlRpcHttpServerConfig serverConfig = (IXmlRpcHttpServerConfig)Config;

            rc.BasicEncoding         = serverConfig.BasicEncoding;
            rc.ContentLengthOptional = serverConfig.ContentLengthOptional && (HttpHelper.GetContentLength(requestHeaders) == null);
            rc.EnabledForExtensions  = serverConfig.EnabledForExtensions;
            rc.GzipCompressing       = HttpHelper.IsUsingGzipEncoding(requestHeaders);
            rc.GzipRequesting        = HttpHelper.IsAcceptingGzipEncoding(requestHeaders);
            // TODO get request encoding
            //rc.Encoding
            rc.EnabledForExceptions = serverConfig.EnabledForExceptions;
            HttpHelper.ParseAuthorization(rc, HttpHelper.GetAuthorization(requestHeaders));
            return(rc);
        }
Пример #4
0
        public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack,
                                               IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream,
                                               out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream)
        {
            if (requestHeaders["SOAPAction"] != null)
            {
                // pass to next sink if this is a SOAP request with SOAPAction header.
                return(NextChannelSink.ProcessMessage(sinkStack,
                                                      requestMsg, requestHeaders, requestStream,
                                                      out responseMsg, out responseHeaders, out responseStream));
            }

            XmlRpcHttpRequestConfig requestConfig = GetConfig(requestHeaders);

            try
            {
                MethodCall call = DeserializeRequest(requestHeaders, requestStream, requestConfig);
                sinkStack.Push(this, call);
                // forward to next sink in chain - pass request stream as null to
                // indicate that we have deserialized the request
                NextChannelSink.ProcessMessage(sinkStack, call, requestHeaders, null,
                                               out responseMsg, out responseHeaders, out responseStream);
                SerializeResponse(responseMsg, ref responseHeaders, ref responseStream, requestConfig);
            }
            catch (Exception ex)
            {
                responseMsg    = new ReturnMessage(ex, (IMethodCallMessage)requestMsg);
                responseStream = new MemoryStream();
                XmlRpcResponseSerializer serializer    = new XmlRpcResponseSerializer();
                XmlRpcResponse           faultResponse = new XmlRpcResponse();
                faultResponse.Fault = new XmlRpcFault(0, ex.Message);
                serializer.WriteResponse(responseStream, faultResponse, requestConfig, TypeSerializerFactory);
                responseHeaders = new TransportHeaders();
                responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
            }

            return(ServerProcessing.Complete);
        }
 private XmlRpcHttpRequestConfig GetConfig(ITransportHeaders requestHeaders)
 {
     XmlRpcHttpRequestConfig rc = new XmlRpcHttpRequestConfig();
     IXmlRpcHttpServerConfig serverConfig = (IXmlRpcHttpServerConfig)Config;
     rc.BasicEncoding = serverConfig.BasicEncoding;
     rc.ContentLengthOptional = serverConfig.ContentLengthOptional && (HttpHelper.GetContentLength(requestHeaders) == null);
     rc.EnabledForExtensions = serverConfig.EnabledForExtensions;
     rc.GzipCompressing = HttpHelper.IsUsingGzipEncoding(requestHeaders);
     rc.GzipRequesting = HttpHelper.IsAcceptingGzipEncoding(requestHeaders);
     // TODO get request encoding
     //rc.Encoding
     rc.EnabledForExceptions = serverConfig.EnabledForExceptions;
     HttpHelper.ParseAuthorization(rc, HttpHelper.GetAuthorization(requestHeaders));
     return rc;
 }