Пример #1
0
        public static IAsyncResult BeginGetDirectories (this DirectoryInfo di, AsyncCallback callback, object asyncState)
        {
            var result = new IOAsyncResult (asyncState);

            var xhr = new Joddes.CS.Html5.XmlHttpRequest();

            xhr.Open ("PROPFIND", di.FullName);

            xhr.SetRequestHeader ("Content-Type", "text/xml; charset=UTF-8");
            xhr.SetRequestHeader ("Depth", "1");
            
            xhr.ReadyStateChange += e =>
            {
                if (xhr.readyState == xhr.DONE) {

                    if(xhr.Status != 404) {
                        var elements = xhr.ResponseXML.GetElementsByTagName ("href");
                        result.Data = elements;
                    }

                    callback (result);
                }
            };

            string webdavCmd = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<D:propfind xmlns:D=\"DAV:\">" + "<D:allprop />" + "</D:propfind>";

            xhr.Send (webdavCmd);

            return result;
        }
Пример #2
0
 public override void TearDown ()
 {
     xhr = null;
 }
Пример #3
0
 public override void Setup ()
 {
     xhr = new XmlHttpRequest();
 }
Пример #4
0
        public static IObservable<FileInfo> GetFilesAsync (this DirectoryInfo di)
        {
            var obs = new IOObservable<FileInfo> ();

            var xhr = new Joddes.CS.Html5.XmlHttpRequest ();
            
            xhr.Open ("PROPFIND", di.FullName);
            
            xhr.SetRequestHeader ("Content-Type", "text/xml; charset=UTF-8");
            xhr.SetRequestHeader ("Depth", "1");
            
            xhr.ReadyStateChange += ev =>
            {
                if (xhr.readyState == xhr.DONE) {
                    
                    if (xhr.Status != 404) {
                        var elements = xhr.ResponseXML.GetElementsByTagName ("response");

                        if (elements != null) {
                            foreach (HTMLElement e in elements) {
                                var tags = e.getElementsByTagName ("getcontenttype");
                                if (tags.Length > 0) {
                                    Node item = tags[0];
                                    var type = item.TextContent;
                                    if (type == "httpd/unix-directory") {
                                        continue;
                                    }
                                }
                                var hrefs = e.getElementsByTagName ("href");
                                Node hrefNode = hrefs[0];
                                var href = hrefNode.TextContent;
                                var d = new FileInfo (href);
                                
                                var cdates = e.getElementsByTagName ("creationdate");
                                Node cdateNode = cdates[0];
                                var cdate = cdateNode.TextContent;
                                
                                d.CreationTime = DateTime.Parse (cdate);
                                
                                var mdates = e.getElementsByTagName ("getlastmodified");
                                Node mdateNode = mdates[0];
                                var mdate = mdateNode.TextContent;
                                
                                d.LastWriteTime = DateTime.Parse (mdate);
                                
                                obs.OnNext(d);
                            }
                            obs.OnCompleted();
                        }
                    }
                    
                    //callback (result);
                }
            };
            
            string webdavCmd = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<D:propfind xmlns:D=\"DAV:\">" + "<D:allprop />" + "</D:propfind>";
            
            xhr.Send (webdavCmd);

            return obs;
        }