Ejemplo n.º 1
0
        private static XmlDocument GetXmlRequest(SiteUrl itemUrl, Uri uri)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                using (XmlTextWriter writer = new XmlTextWriter(ms, Encoding.ASCII))
                {
                    writer.WriteStartDocument(true);
                    writer.WriteStartElement("methodCall");
                    writer.WriteElementString("methodName", "pingback.ping");
                    writer.WriteStartElement("params");

                    writer.WriteStartElement("param");
                    writer.WriteStartElement("value");
                    writer.WriteElementString("string", itemUrl.ToString());
                    writer.WriteEndElement();
                    writer.WriteEndElement();

                    writer.WriteStartElement("param");
                    writer.WriteStartElement("value");
                    writer.WriteElementString("string", uri.ToString());
                    writer.WriteEndElement();
                    writer.WriteEndElement();

                    writer.WriteEndElement();
                    writer.WriteEndElement();
                    XmlDocument xmlDocument = new XmlDocument();
                    xmlDocument.Load(ms);

                    return(xmlDocument);
                }
            }
        }
Ejemplo n.º 2
0
        public static async Task <bool> Notify(ItemDto item, Uri uri)
        {
            BlogConfigurationDto configuration = configurationService.GetConfiguration();

            using (HttpClient client = new HttpClient())
            {
                string content = await client.GetStringAsync(uri);

                Uri trackbackUrl = GetTrackBackUrlFromPage(content);

                if (trackbackUrl != null)
                {
                    SiteUrl itemUrl = item is PostDto
                                                                  ? urlBuilder.Post.Permalink(item)
                                                                  : urlBuilder.Page.Permalink(item);

                    Dictionary <string, string> form = new Dictionary <string, string>
                    {
                        { "title", item.Title },
                        { "url", itemUrl.ToString() },
                        { "excerpt", item.Excerpt },
                        { "blog_name", configuration.Name }
                    };

                    try
                    {
                        await client.PostAsync(trackbackUrl.ToString(), new FormUrlEncodedContent(form));

                        return(true);
                    }
                    catch (Exception ex)
                    {
                        logger.WarnFormat("Unable to send trackback to '{0}'", ex, uri);
                    }

                    return(false);
                }

                return(false);
            }
        }