Exemple #1
0
        private void ProcessRedirectedLocation(TcpResponse page, Uri baseUrl, int retries)
        {
            var newLocation = page.Headers["Location"];
            var absoluteUrl = UrlFrontier.GetUrlFromAnchor(baseUrl, newLocation)?.AbsoluteUri ?? string.Empty;

            if (!UrlFrontier.CanBeSkipped(absoluteUrl))
            {
                Console.WriteLine($"Processing redirect");
                ProcessUrl(absoluteUrl, retries);
            }
        }
Exemple #2
0
        private static TcpResponse BuildTcpResponse(string downloaded)
        {
            var response = new TcpResponse();
            var headers  = GetHeaders(downloaded, out int index);

            response.Html       = index < downloaded.Length ?  downloaded.Substring(index, downloaded.Length - index) : string.Empty;
            response.StatusCode = (HttpStatusCode)Convert.ToInt32(headers[0].Substring(9, 3));
            for (int i = 1; i < headers.Count - 1; i++)
            {
                var items = headers[i].Split(':', 2, StringSplitOptions.RemoveEmptyEntries);
                response.Headers[items[0]] = items[1];
            }
            return(response);
        }