/// <summary> /// Test the url data provided /// </summary> /// <param name="item">UrlData </param> /// <returns>True for a successful test / False if the test attempt failed.</returns> protected bool TestLink(IUrlData item) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.GetURL(BaseUrl)); using (var response = (HttpWebResponse)request.GetResponse()) { item.HeaderResponseCode = response.StatusCode; item.ActualRedirect = response.ResponseUri; } //issue #17 if (WebUtility.UrlDecode(item.ExpectedRedirect).Trim() != WebUtility.UrlDecode(item.ActualRedirect.ToString()).Trim()) { item.Testfail = true; } } catch (WebException webEx) { ErrorMessages.Add(new ErrorMessage($"An error occurred with this url - {item.Url} | {webEx.Message}")); item.ErrorMessage = $"{webEx.Message} -- {webEx.InnerException}"; item.Testfail = true; } return(!item.Testfail); }
/// <summary> /// Build an output message for the user /// right now this is being used for both the csv output and the screen output. /// </summary> /// <param name="item"></param> /// <param name="count"></param> /// <returns>string</returns> private string BuildOutPutMessage(IUrlData item, int count) { var output = string.Empty; var errorMessage = !string.IsNullOrEmpty(item.ErrorMessage) ? item.ErrorMessage : "\"\""; output = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", count, !item.Testfail ? "Passed" : "Failed", ((int)item.HeaderResponseCode).ToString(), item.HeaderResponseCode.ToString(), item.Url, item.ExpectedRedirect, item.ActualRedirect, errorMessage); return(output); }