Esempio n. 1
0
        /// <summary>
        /// XmlRpcMethodMatch tries to reify (deserialize) an incoming
        /// XmlRpc request (and posts it to the "whiteboard") and
        /// checks whether the method name is one we are interested
        /// in.
        /// </summary>
        /// <returns>true if the handler is interested in the content;
        /// false otherwise</returns>
        protected bool XmlRpcMethodMatch(OSHttpRequest req)
        {
            XmlRpcRequest xmlRpcRequest = null;

            // check whether req is already reified
            // if not: reify (and post to whiteboard)
            try
            {
                if (req.Whiteboard.ContainsKey("xmlrequest"))
                {
                    xmlRpcRequest = req.Whiteboard["xmlrequest"] as XmlRpcRequest;
                }
                else
                {
                    StreamReader body = new StreamReader(req.InputStream);
                    string requestBody = body.ReadToEnd();
                    xmlRpcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
                    req.Whiteboard["xmlrequest"] = xmlRpcRequest;
                }
            }
            catch (XmlException)
            {
                _log.ErrorFormat("[OSHttpXmlRpcHandler] failed to deserialize XmlRpcRequest from {0}", req.ToString());
                return false;
            }

            // check against methodName
            if ((null != xmlRpcRequest)
                && !String.IsNullOrEmpty(xmlRpcRequest.MethodName)
                && xmlRpcRequest.MethodName == _methodName)
            {
                _log.DebugFormat("[OSHttpXmlRpcHandler] located handler {0} for {1}", _methodName, req.ToString());
                return true;
            }

            return false;
        }
        /// <summary>
        /// XmlRpcMethodMatch tries to reify (deserialize) an incoming
        /// XmlRpc request (and posts it to the "whiteboard") and
        /// checks whether the method name is one we are interested
        /// in.
        /// </summary>
        /// <returns>true if the handler is interested in the content;
        /// false otherwise</returns>
        protected bool XmlRpcMethodMatch(OSHttpRequest req)
        {
            XmlRpcRequest xmlRpcRequest = null;

            // check whether req is already reified
            // if not: reify (and post to whiteboard)
            try
            {
                if (req.Whiteboard.ContainsKey("xmlrequest"))
                {
                    xmlRpcRequest = req.Whiteboard["xmlrequest"] as XmlRpcRequest;
                }
                else
                {
                    StreamReader body        = new StreamReader(req.InputStream);
                    string       requestBody = body.ReadToEnd();
                    xmlRpcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
                    req.Whiteboard["xmlrequest"] = xmlRpcRequest;
                }
            }
            catch (XmlException)
            {
                _log.ErrorFormat("[OSHttpXmlRpcHandler] failed to deserialize XmlRpcRequest from {0}", req.ToString());
                return(false);
            }

            // check against methodName
            if ((null != xmlRpcRequest) &&
                !String.IsNullOrEmpty(xmlRpcRequest.MethodName) &&
                xmlRpcRequest.MethodName == _methodName)
            {
                _log.DebugFormat("[OSHttpXmlRpcHandler] located handler {0} for {1}", _methodName, req.ToString());
                return(true);
            }

            return(false);
        }