Example #1
0
        private void HandleFolder(string currentLocalPath, WebDavContent item)
        {
            var fileName = item.FilePath;

            if (this.IsBriefkasten(item))
            {
                this.OnLogData(new LogEventArgs("INFO: Kein Update, weil Briefkasten!!! " + item.FilePath));
            }
            else
            {
                this.DownloadWebDavContentRecursive(fileName, currentLocalPath + "\\" + fileName.Substring(fileName.TrimEnd(new char[] { '/' }).LastIndexOf('/')).Trim('/'));
            }
        }
Example #2
0
        private void HandleFile(string currentLocalPath, WebDavContent item)
        {
            var fileName = item.FilePath;

            if (!fileName.Contains("\""))
            {
                string strlocalfile = currentLocalPath + "\\" + fileName.Substring(fileName.LastIndexOf('/')).TrimStart('/');

                FileInfo objLocalFile = new FileInfo(strlocalfile);
                // Todo,jac: objLocalFile.Exists prüfen
                if (objLocalFile.LastWriteTime > Convert.ToDateTime(item.Lastmodified))
                {
                    //File ist lokal neuer
                    //Debug.WriteLine("Lokale Datei ist neuer --> kein Download");
                    this.OnLogData(new LogEventArgs("INFO: Kein Update: " + strlocalfile));
                }
                else
                {
                    //Debug.WriteLine("Lokale Datei ist älter --> Download");
                    this.OnLogData(new LogEventArgs("INFO: Update:      " + strlocalfile));

                    // Todo,jac: wieso wird hier blockiert -> Queue?
                    autoResetEvent = new AutoResetEvent(false);
                    WebDavClient.DownloadComplete += new DownloadCompleteDel(c_DownloadComplete);
                    this.WebDavClient.Download(fileName, strlocalfile);

                    autoResetEvent.WaitOne();
                }
            }
            else
            {
                //Wegen eines der Zeichen \ / : * ? " < > | ist dieses Objekt in Windows Webordnern nicht sichtbar
                LogData(this, new LogEventArgs("ERROR: Datei " + fileName + " kann nicht heruntergeladen werden. Dateinamen wird nicht unterstützt"));
                Debug.WriteLine("Datei kann nicht herungergeladen werden " + fileName);
            }
        }
Example #3
0
        private void FinishList(IAsyncResult result)
        {
            try {
                var statusCode        = 0;
                var webDavContentList = new List <WebDavContent>();

                var managedState   = (ManagedState <string>)result.AsyncState;
                var remoteFilePath = managedState.UserState;

                using (var response = (HttpWebResponse)managedState.HttpWebRequest.EndGetResponse(result)) {
                    statusCode = (int)response.StatusCode;
                    using (var stream = response.GetResponseStream()) {
                        XmlDocument xml = new XmlDocument();
                        xml.Load(stream);

                        XmlNamespaceManager xmlNsManager = new XmlNamespaceManager(xml.NameTable);
                        xmlNsManager.AddNamespace("d", "DAV:");

                        foreach (XmlNode node in xml.DocumentElement.ChildNodes)
                        {
                            WebDavContent currentContent  = new WebDavContent();
                            XmlNode       xmlNode         = null;
                            XmlNode       xmlNodeProp     = null;
                            XmlNode       xmlNodePropStat = null;

                            xmlNode = node.SelectSingleNode("d:href", xmlNsManager);
                            currentContent.FilePath = Uri.UnescapeDataString(xmlNode.InnerXml);

                            xmlNode     = node.SelectSingleNode("d:propstat", xmlNsManager);
                            xmlNodeProp = xmlNode.SelectSingleNode("d:prop", xmlNsManager);
                            //Childnode
                            xmlNodePropStat             = xmlNodeProp.SelectSingleNode("d:getlastmodified", xmlNsManager);
                            currentContent.Lastmodified = Uri.UnescapeDataString(xmlNodePropStat.InnerXml);

                            xmlNodePropStat            = xmlNodeProp.SelectSingleNode("d:getcontenttype", xmlNsManager);
                            currentContent.Contenttype = Uri.UnescapeDataString(xmlNodePropStat.InnerXml);

                            xmlNodePropStat = xmlNodeProp.SelectSingleNode("d:getcontentlength", xmlNsManager);
                            currentContent.Contentlength = Convert.ToInt32(Uri.UnescapeDataString(xmlNodePropStat.InnerXml));


                            xmlNodePropStat             = xmlNodeProp.SelectSingleNode("d:creationdate", xmlNsManager);
                            currentContent.Creationdate = Uri.UnescapeDataString(xmlNodePropStat.InnerXml);

                            // Want to see directory contents, not the directory itself.
                            if (currentContent.FilePath == remoteFilePath)
                            {
                                continue;
                            }
                            webDavContentList.Add(currentContent);
                        }
                    }
                }

                if (ListComplete != null)
                {
                    ListComplete(webDavContentList, statusCode);
                }
            } catch (WebException ex) {
                if (ex.Message.Equals("Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert."))
                {
                    Debug.WriteLine("Benutzername oder Kennwort ist falsch");
                }
            }
        }
Example #4
0
 private bool IsBriefkasten(WebDavContent item)
 {
     return(item.FilePath.IndexOf("briefkasten", StringComparison.OrdinalIgnoreCase) > 0);
 }
Example #5
0
        //=========================================================================================
        #region Private Helpers

        private bool IsFolder(WebDavContent item)
        {
            return(item.Contentlength == 0);
        }