/// <summary> /// Converts string to url-address /// </summary> /// <param name="urlAddressString">Url-address string</param> /// <returns>URLAddress made from specified string</returns> public static URLAddress ToURLAddress(this string urlAddressString) { Uri uri = new Uri(urlAddressString); URLAddress urlAddress = new URLAddress(uri.Host, GetSegments(uri.Segments), GetParameters(uri.Query)); return(urlAddress); }
/// <summary> /// Creates xml-element for url-address /// </summary> /// <param name="url">Url-address to be converted to xml-element</param> /// <returns>Xml-element urlAddress with specified structure</returns> static private XElement CreateUrlAddressElement(URLAddress url) { XElement urlAddress = new XElement("urlAddress"); urlAddress.Add(CreateHostElement(url.Host)); if (url.Segments != null) { urlAddress.Add(CreateUriElement(url.Segments)); } if (url.Parameters != null) { urlAddress.Add(CreateParametresElement(url.Parameters)); } return(urlAddress); }
/// <summary> /// Writes xml-document with sequence of url-addresses to file /// </summary> /// <param name="urlAddressesStrings">Sequence of url-addresses to be added to xml-document</param> /// <param name="writePath">Path of file to save xml-document</param> public static void WriteXDocumentWithUrlAddresses(IEnumerable <string> urlAddressesStrings, string writePath) { logger = LogManager.GetCurrentClassLogger(); if (urlAddressesStrings.Count() == 0) { logger.Info("No url-addresses to create xml-document."); return; } List <URLAddress> urlAddresses = new List <URLAddress>(); foreach (var url in urlAddressesStrings) { try { URLAddress urlAddress = url.ToURLAddress(); urlAddresses.Add(urlAddress); } catch { logger.Error("String: " + url + " doesn't match url-address pattern"); } } if (urlAddresses.Count == 0) { logger.Info("No matches of url-address pattern found in strings sequence."); return; } XDocument document = URLAddresstoXML.GetXmlUrlAddresses(urlAddresses); if (writePath == null) { logger.Error("Specified file path is null."); throw new ArgumentNullException(); } document.Save(writePath); }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <returns></returns> public static XDocument ReadURLAddressesFromFile(string path) { logger = LogManager.GetCurrentClassLogger(); if (path == null) { logger.Error("Specified file path is null."); throw new ArgumentNullException(); } IEnumerable <string> lines = File.ReadLines(path); if (lines.Count() == 0) { logger.Info("File is empty."); return(null); } List <URLAddress> urlAddresses = new List <URLAddress>(); foreach (var line in lines) { try { URLAddress urlAddress = line.ToURLAddress(); urlAddresses.Add(urlAddress); } catch { logger.Error("Line: " + line + " doesn't match url-address pattern"); } } if (urlAddresses.Count == 0) { logger.Info("No matches of url-address pattern found in the file."); return(null); } return(URLAddresstoXML.GetXmlUrlAddresses(urlAddresses)); }