Пример #1
0
        private void StoreLinks(List <string> filtredLinks, DataTable dt)
        {
            for (int i = 0; i < filtredLinks.Count; i++)
            {
                if (dt.Select($"Url = '{filtredLinks[i]}'").Length == 0)
                {
                    try
                    {
                        var existingUrl = this.webDbContext.UrlAdresses.Where(url => url.urlAddress == filtredLinks[i]).FirstOrDefault();

                        if (existingUrl == null)
                        {
                            existingUrl = new UrlAddress(filtredLinks[i]);
                            this.webDbContext.UrlAdresses.Add(existingUrl).State = EntityState.Added;
                            this.webDbContext.SaveChanges();
                        }

                        Response reponseTimeModel = new Response(existingUrl.Id, this.GetResponseTime(filtredLinks[i]));
                        this.webDbContext.Responses.Add(reponseTimeModel);

                        DataRow row = dt.NewRow();
                        row["Url"]           = filtredLinks[i];
                        row["Response Time"] = reponseTimeModel.ResponseTime + " s";
                        row["UrlLength"]     = filtredLinks[i].Length;
                        row["id"]            = existingUrl.Id;
                        dt.Rows.Add(row);
                    }
                    catch (WebException)
                    {
                    }
                }
            }
            this.webDbContext.SaveChanges();
        }
Пример #2
0
        public void DownloadImagesFromUrl()
        {
            using (WebClient webClient = new WebClient())
            {
                //https://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog(v=vs.110).aspx use instead hardcoding the file paths.
                foreach (var image in ListOfImagePaths)
                {
                    //Use instead of string for the url address, instance of Url class (.Net) so you can avoid hardcoded indexes like that.
                    var primaryUrlEndIndex = UrlAddress.IndexOf(@"/", 9);
                    var primaryUrl         = UrlAddress.Substring(0, primaryUrlEndIndex + 1);
                    var index    = image.LastIndexOf(@"/");
                    var filePath = image.Substring(index + 1);

                    if (!File.Exists(DOWNLOADFILEPATH + filePath))
                    {
                        if (image.StartsWith("/"))
                        {
                            webClient.DownloadFile(new Uri(primaryUrl + image.Substring(1)), DOWNLOADFILEPATH + filePath);
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine($"Downloading image {image}");
                        }
                        else if (image.StartsWith(@"http"))
                        {
                            webClient.DownloadFile(new Uri(image), DOWNLOADFILEPATH + filePath);
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine($"Downloading image {image}");
                        }
                    }
                }
            }
        }
Пример #3
0
        public bool TryParse(string urlstring, out UrlAddress url)
        {
            url = new UrlAddress();
            var match = Regex.Match(urlstring,
                                    @"^(http|https|ftp)://(([\w\-]+)(\.[\w\-]+)+)(/([\w\-]+(/[\w\-\.]+)*))?(/?|(\?([\w]+=[\w]*(&([\w]+)=([\w]*))*)))$");

            if (!match.Success)
            {
                url = null;
                return(false);
            }

            url.Scheme     = match.Groups[1].Value;
            url.Host       = match.Groups[2].Value;
            url.UrlPath    = match.Groups[6].Value;
            url.Parameters = new List <Parameter>();
            foreach (var param in match.Groups[10].ToString().Split('&'))
            {
                var paramMatch = Regex.Match(param, @"([\w]+)=([\w]*)");
                if (!paramMatch.Success)
                {
                    url.Parameters = null;
                    return(true);
                }
                url.Parameters.Add(new Parameter(paramMatch.Groups[1].Value, paramMatch.Groups[2].Value));
            }
            return(true);
        }
Пример #4
0
        /// <summary>
        /// Retrieves and converts URLs from file.
        /// </summary>
        /// <param name="fileStream">FileStream for file with URLs.</param>
        /// <returns>List of UrlAddress objects.</returns>
        private List <UrlAddress> GetAdressesFromFile(FileStream fileStream)
        {
            List <UrlAddress> adresses = new List <UrlAddress>();

            using (StreamReader reader = new StreamReader(fileStream))
            {
                string urlString = reader.ReadLine();
                while (urlString != null)
                {
                    UrlAddress address = UrlParser.Parse(urlString);
                    if (address != null)
                    {
                        adresses.Add(UrlParser.Parse(urlString));
                        this.logger.Info(urlString + " was succesfully written.");
                    }
                    else
                    {
                        this.logger.Error(urlString + " was not written.");
                    }

                    urlString = reader.ReadLine();
                }
            }

            return(adresses);
        }
Пример #5
0
        /// <summary>
        /// Method ParseFile convert initial file's lines to XML
        /// </summary>
        /// <param name="filePath"> line of initial file</param>
        /// <returns>List of UrlAddresses that was taking from initial file</returns>
        public List <UrlAddress> ParseFile(string filePath)
        {
            var file         = new StreamReader(filePath);
            var urlAddresses = new List <UrlAddress>();

            try
            {
                string line;
                while ((line = file.ReadLine()) != null)
                {
                    var url        = new Uri(line);
                    var urlAddress = new UrlAddress
                    {
                        HostName = url.Host
                    };
                    if (url.Segments.Length != 0)
                    {
                        var            uri     = new UriTag();
                        List <Segment> listSeg = new List <Segment>();
                        var            seg     = new Segment();
                        for (var i = 1; i < url.Segments.Length - 1; i++)
                        {
                            seg.Segments = url.Segments[i].Remove(url.Segments[i].Length - 1);
                            listSeg.Add(seg);
                        }

                        seg.Segments = url.Segments[url.Segments.Length - 1];
                        listSeg.Add(seg);
                        uri.Segments       = listSeg;
                        urlAddress.UriTags = uri;
                    }
                    if (!string.IsNullOrEmpty(url.Query))
                    {
                        var param = url.Query.Remove(0, 1).Split('&');
                        foreach (var s in param)
                        {
                            var par    = s.Split('=');
                            var urlPar = new Parameter()
                            {
                                Key   = par[0],
                                Value = par[1]
                            };
                            urlAddress.Parametrs.Add(urlPar);
                        }
                    }
                    urlAddresses.Add(urlAddress);
                }
            }
            catch (Exception)
            {
                Logger?.Info("Data is not valid.");
            }
            return(urlAddresses);
        }
Пример #6
0
        private UrlAddress Mapper(IDataReader reader)
        {
            UrlAddress singleItem    = new UrlAddress();
            int        startingIndex = 0; //startingOrdinal

            singleItem.Id           = reader.GetSafeInt32(startingIndex++);
            singleItem.Url          = reader.GetSafeString(startingIndex++);
            singleItem.CreatedDate  = reader.GetSafeDateTime(startingIndex++);
            singleItem.ModifiedDate = reader.GetSafeDateTime(startingIndex++);
            singleItem.ModifiedBy   = reader.GetSafeString(startingIndex++);
            return(singleItem);
        }
Пример #7
0
        public List <UrlAddress> GetAll()
        {
            List <UrlAddress> list = new List <UrlAddress>();

            DataProvider.ExecuteCmd("dbo.UrlAddress_SelectAll"
                                    , inputParamMapper : null
                                    , singleRecordMapper : delegate(IDataReader reader, short set)
            {
                UrlAddress singleItem = Mapper(reader);
                list.Add(singleItem);
            });
            return(list);
        }
Пример #8
0
        public UrlAddress Get(int id)
        {
            UrlAddress singleItem = null;

            DataProvider.ExecuteCmd("dbo.UrlAddress_SelectById"
                                    , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@Id", id);
            }
                                    , singleRecordMapper : delegate(IDataReader reader, short set)
            {
                singleItem = Mapper(reader);
            });
            return(singleItem);
        }
        public static XElement ToXml(this UrlAddress url)
        {
            XElement xml = new XElement("URL");

            xml.Add(new XElement("Schema", url.Scheme));
            xml.Add(new XElement("Host", url.Host));
            if (ReferenceEquals(null, url.UrlPath))
            {
                return(xml);
            }
            xml.Add(new XElement("UrlPath", url.UrlPath));
            xml.Add(new XElement("Parameters"));
            if (!ReferenceEquals(null, url.Parameters))
            {
                foreach (var param in url.Parameters)
                {
                    xml.Element("Parameters")?.Add(
                        new XElement("Parameter",
                                     new XElement("Name", param.Name),
                                     new XElement("Value", param.Value)));
                }
            }
            return(xml);
        }