WriteLockDiscovery() static private method

static private WriteLockDiscovery ( System writer, Node node, int timeout ) : void
writer System
node Node
timeout int
return void
コード例 #1
0
ファイル: Lock.cs プロジェクト: vlslavik/SenseNet
 private static System.Xml.XmlTextWriter GetSuccessResult(Node node, int timeout)
 {
     System.Xml.XmlTextWriter writer = Common.GetXmlWriter();
     writer.WriteStartElement(XmlNS.DAV_Prefix, "prop", XmlNS.DAV);
     Lock.WriteLockDiscovery(writer, node, timeout);
     writer.WriteEndElement(); // prop
     return(writer);
 }
コード例 #2
0
        internal void WriteSingleItem(Node node, WebdavType wdType, string binaryPropertyName)
        {
            // set nodeName extensions
            var nodeName = node.Name;
            var nodePath = node.Path;

            if (wdType == WebdavType.Content)
            {
                nodeName = nodeName + ".Content";
                nodePath = nodePath + ".Content";
            }
            else if (wdType == WebdavType.ContentType)
            {
                nodeName = nodeName + "Ctd.xml";
                nodePath = nodePath + "Ctd.xml";
            }
            else if (wdType != WebdavType.Folder)
            {
                if (binaryPropertyName != "Binary")
                {
                    nodeName = string.Concat(node.Name, ".", binaryPropertyName);
                }

                nodePath = RepositoryPath.Combine(node.ParentPath, nodeName);
            }

            // response
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "response", XmlNS.DAV);
            //href
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "href", XmlNS.DAV);
            _writer.WriteString(_handler.RepositoryPathToUrl(nodePath));
            _writer.WriteEndElement();

            //propstat
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "propstat", XmlNS.DAV);
            // propstat/status
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "status", XmlNS.DAV);

            _writer.WriteString("HTTP/1.1 200 OK");
            _writer.WriteEndElement();             // propstat/status

            // propstat/prop
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "prop", XmlNS.DAV);

            // propstat/prop/getcontentlenght
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "getcontentlength", XmlNS.DAV);

            if (wdType == WebdavType.File)
            {
                var f = node as IFile;
                if (f != null)
                {
                    _writer.WriteString(((BinaryData)node[binaryPropertyName]).Size.ToString());
                }
                else
                {
                    _writer.WriteString("0");
                }
            }
            else
            {
                _writer.WriteString("0");
            }

            _writer.WriteEndElement();             // propstat/prop/getcontentlenght

            // lockdiscovery
            if (node.Locked)
            {
                Lock.WriteLockDiscovery(_writer, node, node.LockTimeout);
            }

            // supportedlock
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "supportedlock", XmlNS.DAV);
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "lockentry", XmlNS.DAV);
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "lockscope", XmlNS.DAV);
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "exclusive", XmlNS.DAV);
            _writer.WriteEndElement(); // exclusive
            _writer.WriteEndElement(); // lockscope
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "locktype", XmlNS.DAV);
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "write", XmlNS.DAV);
            _writer.WriteEndElement(); // write
            _writer.WriteEndElement(); // locktype
            _writer.WriteEndElement(); // lockentry
            _writer.WriteEndElement(); // supportedlock

            // propstat/prop/creationdate
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "creationdate", XmlNS.DAV);
            _writer.WriteString(node.CreationDate.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.sZ"));
            _writer.WriteEndElement();             // propstat/prop/creationdate

            // propstat/prop/displayname
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "displayname", XmlNS.DAV);
            //_writer.WriteString(entry.Name);

            //_writer.WriteString(node.Name);
            _writer.WriteString(nodeName);
            _writer.WriteEndElement();             // propstat/prop/displayname

            var eTag = Guid.NewGuid().ToString();

            // propstat/prop/getetag
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "getetag", XmlNS.DAV);
            _writer.WriteString(eTag);
            _writer.WriteEndElement();             // propstat/prop/getetag

            // propstat/prop/getlastmodified
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "getlastmodified", XmlNS.DAV);
            _writer.WriteString(node.ModificationDate.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.sZ"));
            _writer.WriteEndElement();             // propstat/prop/getlastmodified

            // propstat/prop/resourcetype
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "resourcetype", XmlNS.DAV);
            if (wdType == WebdavType.Folder)
            {
                // propstat/prop/resourcetype/collection
                _writer.WriteStartElement(XmlNS.DAV_Prefix, "collection", XmlNS.DAV);
                _writer.WriteEndElement();                 // propstat/prop/resourcetype/collection

                // propstat/prop/resourcetype/Repl
                //_writer.WriteStartElement(XmlNS.MSRepl_Prefix, "Repl", XmlNS.MSRepl);
                //_writer.WriteString("t");
                //_writer.WriteEndElement(); // propstat/prop/resourcetype/Repl
            }
            _writer.WriteEndElement();             // propstat/prop/resourcetype

            _writer.WriteStartElement(XmlNS.MSRepl_Prefix, "repl-uid", XmlNS.MSRepl);
            _writer.WriteString("rid:{");
            _writer.WriteString(eTag);
            _writer.WriteString("}");
            _writer.WriteEndElement();

            _writer.WriteStartElement(XmlNS.MSRepl_Prefix, "resourcetag", XmlNS.MSRepl);
            _writer.WriteString("rt:");
            _writer.WriteString(eTag);
            _writer.WriteString("@00000000000");
            _writer.WriteEndElement();

            // propstat/prop/isFolder
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "isfolder", XmlNS.DAV);
            if (wdType == WebdavType.Folder)
            {
                _writer.WriteString("t");
            }
            else
            {
                _writer.WriteString("0");
            }
            _writer.WriteEndElement();             // propstat/prop/isFolder

            // propstat/prop/iscollection
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "iscollection", XmlNS.DAV);
            if (wdType == WebdavType.Folder)
            {
                _writer.WriteString("1");
            }
            else
            {
                _writer.WriteString("0");
            }
            _writer.WriteEndElement();             // propstat/prop/iscollection

            // propstat/prop/getcontenttype
            _writer.WriteStartElement(XmlNS.DAV_Prefix, "getcontenttype", XmlNS.DAV);
            if (wdType == WebdavType.Folder)
            {
                _writer.WriteString("application/octet-stream");
            }
            else
            {
                _writer.WriteString("text/xml");
            }
            _writer.WriteEndElement();            // propstat/prop/getcontenttype
            _writer.WriteEndElement();            // propstat/prop
            _writer.WriteEndElement();            // propstat
            _writer.WriteEndElement();            // response
        }