private List <string> Search(string baseAddr, string query, List <DirectoryItem> directories) { List <string> matches = new List <string>(); foreach (DirectoryItem item in directories) { if (item.IsDirectory) { string cd = FtpUtils.UriBuilder(baseAddr, item.Filename); AddLine("Searching: " + cd); try { List <DirectoryItem> newDir = FtpUtils.DirectoryListingParser(GetDirectoryListing(new RequestInfo() { Host = cd }), baseAddr); matches.AddRange(Search(cd, query, newDir)); } catch (Exception) { AddLine("Searching folder " + cd); } } if (FtpUtils.Match(query, item.Filename)) { matches.Add(FtpUtils.UriBuilder(baseAddr, item.Filename)); } } return(matches); }
public void Connect(string[] addresses, string searchQuery) { List <RequestInfo> allRequestInfo = FtpUtils.RequestInfoList(addresses); AddLine("Beginning conections..."); foreach (RequestInfo info in allRequestInfo) { AddLine("Connecting to " + info.Host); try { List <string> resultList = Search(info.Host, searchQuery, FtpUtils.DirectoryListingParser(GetDirectoryListing(info), info.Host)); AddLine("FOUND RESULTS:"); AddLines(resultList.ToArray()); } catch (WebException) { AddLine("WebException, Something failed."); } } }