Exemple #1
0
        /// <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;
        }
Exemple #2
0
        /// <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);
        }