/// <summary> /// Запрос возвращает информацию о папке dir и всех папках и файлах в нем /// </summary> /// <param name="dir">Папка</param> /// <param name="getRoot"></param> /// <returns>Список файлов и папок в папке dir или null если произошла ошибка</returns> public List <DirInfo> GetDirectories(string dir, bool getRoot = false) { var request = createRequest(dir); request.Headers.Add("Depth", "1"); request.Method = "PROPFIND"; try { //WebProxy proxy = new WebProxy(); //proxy.Address = new Uri("http://127.0.0.1:8888"); //request.Proxy = proxy; var resp = (HttpWebResponse)request.GetResponse(); using (var responseStream = resp.GetResponseStream()) { var sr = new StreamReader(responseStream); var cont = sr.ReadToEnd(); var dinfo = new List <DirInfo>(); while (true) { var posBeg = cont.IndexOf("<d:response>", StringComparison.InvariantCultureIgnoreCase); var posEnd = cont.IndexOf("</d:response>", StringComparison.InvariantCultureIgnoreCase); if (posBeg < 0) { break; } try { dinfo.Add(DirInfo.Parse(cont.Substring(posBeg, posEnd - posBeg), server)); } catch {} cont = cont.Substring(posEnd + 1); } if (!getRoot && dinfo.Count > 0) { dinfo.RemoveAt(0); } return(dinfo); } } catch (Exception ex) { if (ThrowErrors) { throw; } lastError = ex.Message; return(null); } }
/// <summary> /// Запрос возвращает информацию о папке dir и всех папках и файлах в нем /// </summary> /// <param name="dir">Папка</param> /// <returns>Список файлов и папок в папке dir или null если произошла ошибка</returns> public DirInfo GetInfo(string dir) { var request = createRequest(dir); request.Headers.Add("Depth", "1"); request.Method = "PROPFIND"; try { var resp = (HttpWebResponse)request.GetResponse(); using (var responseStream = resp.GetResponseStream()) { var sr = new StreamReader(responseStream); var cont = sr.ReadToEnd(); var dinfo = new List <DirInfo>(); while (true) { var posBeg = cont.IndexOf("<d:response>", StringComparison.InvariantCultureIgnoreCase); var posEnd = cont.IndexOf("</d:response>", StringComparison.InvariantCultureIgnoreCase); if (posBeg < 0) { break; } try { dinfo.Add(DirInfo.Parse(cont.Substring(posBeg, posEnd - posBeg), server)); } catch { } cont = cont.Substring(posEnd + 1); } return(dinfo != null && dinfo.Count > 0 ? dinfo[0] : null); } } catch (Exception ex) { if (ThrowErrors) { throw; } lastError = ex.Message; return(null); } }
public static DirInfo Parse(string xml, string server) { var rez = new DirInfo { CreationDate = getData(xml, "creationdate"), DisplayName = getData(xml, "displayname"), ContentLenght = Convert.ToInt32(getData(xml, "getcontentlength")), LastModified = getData(xml, "getlastmodified"), FullPath = HttpUtility.UrlDecode(getData(xml, "href")), IsDirectory = getData(xml, "isCollection") == "1", }; rez.Server = server; rez.RelPath = rez.FullPath.Replace(server, ""); var dt = DateTime.Parse(rez.LastModified);//.Subtract(new TimeSpan(4, 0, 0)); rez.LastModified = dt.ToLongDateString().Replace(" г.", "") + " " + dt.ToLongTimeString(); dt = DateTime.Parse(rez.CreationDate);//.Subtract(new TimeSpan(4, 0, 0)); rez.CreationDate = dt.ToLongDateString().Replace(" г.", "") + " " + dt.ToLongTimeString(); return(rez); }