//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); }
//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; }