private void OnCommandWikipedia(string Source, string Query)
{
try
{
XDocument Document;
XElement SearchResult = null;
string Title;
string Description;
string Url;
HttpWebRequest Request;
HttpWebResponse Response;
Stream ResponseStream;
IncrementStatistic("IRC_COMMAND_WIKIPEDIA");
Request = (HttpWebRequest) WebRequest.Create(String.Format("http://en.wikipedia.org/w/api.php?action=opensearch&limit=1&namespace=0&format=xml&search={0}", Uri.EscapeDataString(Query)));
Request.UserAgent = "ALFAIRCBot/" + Assembly.GetExecutingAssembly().GetName().Version.ToString();
Response = (HttpWebResponse)Request.GetResponse();
ResponseStream = Response.GetResponseStream();
try
{
Document = XDocument.Load(ResponseStream);
}
finally
{
ResponseStream.Close();
Response.Close();
}
SearchResult = (from XElement E in Document.Descendants(WikipediaAPINamespace + "Section") select E).FirstOrDefault();
if (SearchResult != null)
SearchResult = (from XElement E in SearchResult.Descendants(WikipediaAPINamespace + "Item") select E).FirstOrDefault();
if (SearchResult == null)
{
SendMessage(SendType.Message, Source, "No results.");
return;
}
Title = (string)(from XElement E in SearchResult.Descendants(WikipediaAPINamespace + "Text") select E).FirstOrDefault();
Description = (string)(from XElement E in SearchResult.Descendants(WikipediaAPINamespace + "Description") select E).FirstOrDefault();
Url = (string)(from XElement E in SearchResult.Descendants(WikipediaAPINamespace + "Url") select E).FirstOrDefault();
SendMessage(SendType.Message, Source, String.Format("{0}: {1} - {2}", Title, Url, Description));
}
catch (Exception)
{
SendMessage(SendType.Message, Source, String.Format("Unable to retrieve search results for {0}.", Query));
}
}