/// <summary> /// Performs a pingback request to all links in the given <paramref name="document"/>. /// </summary> /// <param name="sourceUrl">The source URL.</param> /// <param name="document">The document.</param> /// <returns>A list of <see cref="PingBackResult">PingBackResults</see>.</returns> public static IEnumerable<PingBackResult> PerformPingBack(string sourceUrl, string document) { if (sourceUrl == null) { throw new ArgumentNullException("sourceUrl"); } if (document == null) { throw new ArgumentNullException("document"); } var result = new List<PingBackResult>(); foreach (var link in GetHyperlinks(document)) { var pingBackResult = new PingBackResult(); pingBackResult.Url = link; result.Add(pingBackResult); string pingbackURL = null; try { pingbackURL = AutoDiscoverPingbackUrl(link); } catch (Exception ex) { pingBackResult.Message = ex.Message; continue; } if (pingbackURL == null) { pingBackResult.Message = "Could not determine Pingback URL."; continue; } try { var proxy = (IPingbackRequest)XmlRpcProxyGen.Create(typeof(IPingbackRequest)); proxy.Url = pingbackURL; proxy.XmlRpcMethod = "pingback.ping"; pingBackResult.Message = proxy.Pingback(sourceUrl, link); pingBackResult.Success = true; } catch (XmlRpcFaultException ex) { pingBackResult.Message = ex.FaultCode + " " + ex.FaultString; } catch (Exception ex) { pingBackResult.Message = ex.Message; } } return result; }
/// <summary> /// Performs a pingback request to all links in the given <paramref name="document"/>. /// </summary> /// <param name="sourceUrl">The source URL.</param> /// <param name="document">The document.</param> /// <returns>A list of <see cref="PingBackResult">PingBackResults</see>.</returns> public static IEnumerable <PingBackResult> PerformPingBack(string sourceUrl, string document) { if (sourceUrl == null) { throw new ArgumentNullException("sourceUrl"); } if (document == null) { throw new ArgumentNullException("document"); } var result = new List <PingBackResult>(); foreach (var link in GetHyperlinks(document)) { var pingBackResult = new PingBackResult(); pingBackResult.Url = link; result.Add(pingBackResult); string pingbackURL = null; try { pingbackURL = AutoDiscoverPingbackUrl(link); } catch (Exception ex) { pingBackResult.Message = ex.Message; continue; } if (pingbackURL == null) { pingBackResult.Message = "Could not determine Pingback URL."; continue; } try { var proxy = (IPingbackRequest)XmlRpcProxyGen.Create(typeof(IPingbackRequest)); proxy.Url = pingbackURL; proxy.XmlRpcMethod = "pingback.ping"; pingBackResult.Message = proxy.Pingback(sourceUrl, link); pingBackResult.Success = true; } catch (XmlRpcFaultException ex) { pingBackResult.Message = ex.FaultCode + " " + ex.FaultString; } catch (Exception ex) { pingBackResult.Message = ex.Message; } } return(result); }