Example #1
0
        //PROPPATCH
        public int PropPatch(byte[] input)
        {
            if (_targetKind == TargetKind.Non)
            {
                return(404);
            }

            int responseCode = 500;

            if (_webDavKind == WebDavKind.Write)
            {
                responseCode = 207;

                var propPatchResponce = new PropPatchResponce(_hrefUri);

                //設定値の読み込み
                var doc = new XmlDocument();
                doc.LoadXml(Encoding.ASCII.GetString(input));
                //set
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:set"))
                {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes)
                    {
                        if (nodeProp.LocalName.ToLower() == "prop")
                        {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes)
                            {
                                var nameSpace    = nodeTarget.NamespaceURI;
                                var name         = nodeTarget.LocalName;
                                var value        = nodeTarget.InnerText;
                                var responceCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:"){
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:")
                                {
                                    _webDavDb.Set(_hrefUri, nameSpace, name, value);//DB更新処理
                                }
                                else
                                {
                                    responceCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responceCode);
                            }
                        }
                    }
                }
                //propertyupdate
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:propertyupdate"))
                {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes)
                    {
                        if (nodeProp.LocalName.ToLower() == "prop")
                        {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes)
                            {
                                var nameSpace = nodeTarget.NamespaceURI;
                                var name      = nodeTarget.LocalName;
                                var value     = nodeTarget.InnerText;
                                responseCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:") {
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:")
                                {
                                    _webDavDb.Set(_hrefUri, nameSpace, name, value);//DB更新処理
                                }
                                else
                                {
                                    responseCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responseCode);
                            }
                        }
                    }
                }
                //remove
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:remove"))
                {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes)
                    {
                        if (nodeProp.LocalName.ToLower() == "prop")
                        {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes)
                            {
                                var nameSpace = nodeTarget.NamespaceURI;
                                var name      = nodeTarget.LocalName;
                                responseCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:") {
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:")
                                {
                                    _webDavDb.Remove(_hrefUri, nameSpace, name);//DB更新処理
                                }
                                else
                                {
                                    responseCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responseCode);
                            }
                        }
                    }
                }

                //レスポンス作成
                _document.CreateFromXml(propPatchResponce.ToString());
            }
            return(responseCode);
        }
Example #2
0
        //PROPPATCH
        public int PropPatch(byte[] input)
        {
            if (_targetKind == TargetKind.Non)
                return 404;

            int responseCode = 500;
            if (_webDavKind == WebDavKind.Write) {
                responseCode = 207;

                var propPatchResponce = new PropPatchResponce(_hrefUri);

                //設定値の読み込み
                var doc = new XmlDocument();
                doc.LoadXml(Encoding.ASCII.GetString(input));
                //set
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:set")) {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes) {
                        if (nodeProp.LocalName.ToLower() == "prop") {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes) {
                                var nameSpace = nodeTarget.NamespaceURI;
                                var name = nodeTarget.LocalName;
                                var value = nodeTarget.InnerText;
                                var responceCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:"){
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:") {
                                    _webDavDb.Set(_hrefUri, nameSpace, name, value);//DB更新処理
                                } else {
                                    responceCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responceCode);
                            }
                        }
                    }
                }
                //propertyupdate
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:propertyupdate")) {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes) {
                        if (nodeProp.LocalName.ToLower() == "prop") {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes) {
                                var nameSpace = nodeTarget.NamespaceURI;
                                var name = nodeTarget.LocalName;
                                var value = nodeTarget.InnerText;
                                responseCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:") {
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:") {
                                    _webDavDb.Set(_hrefUri, nameSpace, name, value);//DB更新処理
                                } else {
                                    responseCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responseCode);
                            }
                        }
                    }
                }
                //remove
                foreach (XmlNode nodeSet in doc.GetElementsByTagName("D:remove")) {
                    foreach (XmlNode nodeProp in nodeSet.ChildNodes) {
                        if (nodeProp.LocalName.ToLower() == "prop") {
                            foreach (XmlNode nodeTarget in nodeProp.ChildNodes) {
                                var nameSpace = nodeTarget.NamespaceURI;
                                var name = nodeTarget.LocalName;
                                responseCode = 200;
                                //if(targetKind == TARGET_KIND.FILE && nameSpace != "DAV:") {
                                if ((_targetKind == TargetKind.File || _targetKind == TargetKind.Dir) && nameSpace != "DAV:") {
                                    _webDavDb.Remove(_hrefUri, nameSpace, name);//DB更新処理
                                } else {
                                    responseCode = 409;
                                }
                                propPatchResponce.Add(nameSpace, name, responseCode);
                            }
                        }
                    }
                }

                //レスポンス作成
                _document.CreateFromXml(propPatchResponce.ToString());
            }
            return responseCode;
        }