/// <summary> /// Gets a trackback message /// </summary> /// <param name="Request">Request object</param> /// <returns>A trackback message</returns> public static TrackBackMessage GetTrackBack(HttpRequest Request) { TrackBackMessage Message = new TrackBackMessage(); Message.Title = Request.Params["title"]; Message.ID = Request.Params["id"]; Message.Excerpt = Request.Params["excerpt"]; Message.BlogName = Request.Params["blog_name"]; if (Request.Params["url"] != null) Message.PostUrl = new Uri(Request.Params["url"].Split(',')[0]); return Message; }
private static void GetTrackBackURL(TrackBackMessage Message) { using (WebClient Client = new WebClient()) { Client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); string TempContent = Client.DownloadString(Message.NotificationURL); string TempURL = TrackBackLink.Match(TempContent).Groups[1].ToString().Trim(); Uri TempURI; Uri.TryCreate(TempURL, UriKind.Absolute, out TempURI); Message.NotificationURL = TempURI; TempURL = TrackBackID.Match(TempURL).Groups[1].ToString().Trim(); Message.ID = TempURL; } }
/// <summary> /// Sends a track back message /// </summary> /// <param name="Message">Message to send</param> public static void SendTrackBack(TrackBackMessage Message) { if (Message == null) throw new ArgumentException("Message can not be null."); GetTrackBackURL(Message); HttpWebRequest Request = (HttpWebRequest)System.Net.HttpWebRequest.Create(Message.NotificationURL); Request.Credentials = CredentialCache.DefaultNetworkCredentials; Request.Timeout = 10000; Request.Method = "POST"; Request.ContentType = "application/x-www-form-urlencoded"; Request.ContentLength = Message.ToString().Length; Request.KeepAlive = false; using (StreamWriter Writer = new StreamWriter(Request.GetRequestStream())) { Writer.Write(Message.ToString()); } HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); string ResponseText = ""; using (System.IO.StreamReader Reader = new System.IO.StreamReader(Response.GetResponseStream())) { ResponseText = Reader.ReadToEnd(); } if (Response.StatusCode == HttpStatusCode.OK) { if (!ResponseText.Contains("<error>0</error>")) { throw new InvalidOperationException(ResponseText); } } else { throw new HttpException("HTTP Error occurred: " + Response.StatusCode.ToString()); } }