Writing a simple greeting bot for MediaWiki/Introduction to MediaWiki scripting access

From Wikiversity

Jump to: navigation, search

On this page you will get an introductory overview over how MediaWiki works and in which ways it can be accessed from scripts.

Note: The code examples in this course use C# and the .NET Framework. The use of an Integrated development environment(IDE) is strongly recommended. For Windows users, Microsoft provides a free C# IDE called Visual C# Express. For Linux and Mac users, there is a free IDE called MonoDevelop available.

[edit] Fundamentals

MediaWiki is a PHP web application based on HTTP. Because of that, scripts communicate with MediaWiki in a series of requests and responses. To get the contents of a page, for example, the script sends a request to the server hosting MediaWiki (e.g. http://en.wikiversity.org/). The server then responds with the page content plus some additional statistical information. Each script action, such as loading or saving a page, requires a new set of requests and responses.

[edit] Exercise 1 - A simple request

In this exercise, we will send a request to retrieve the contents of Wikiversity's main page. Here's the code:

using System;
using System.Net;
using System.IO;
using System.Text;

namespace BotCourse {
  class Program {
    static void Main(string[] args) {
      Uri uri = new Uri("http://en.wikiversity.org/wiki/Wikiversity:Main Page");

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

      request.UserAgent = "Wikiversity bot course/1.0";
      request.ContentType = "application/x-www-form-urlencoded";

      using (WebResponse response = request.GetResponse())
        using (StreamReader strmReader = new StreamReader(response.GetResponseStream()))
	  File.WriteAllText("Main page.txt", strmReader.ReadToEnd(), Encoding.UTF8);
    }
  }
}

Let's take a closer look at what this code does. We

  1. We create an Uri object to hold the address of the page, in this case Wikiversity:Main Page.
  2. We create a new HTTP request object by calling WebRequest's Create page with the address of the page we want. If you are not familiar with HTTP at all, I suggest taking a quick peek at w:HTTP.
  3. We then set the user agent and content type headers typical for HTTP requests. Although innocent looking, these are actually quite important: MediaWiki refuses any request which does not provide these two headers.
  4. By calling GetResponse, the request is sent and a response retrieved.
  5. We read the content of the response and save it to a local file called "Main page.txt".

If you open the file, you will see the same content that would be shown if you went to Wikiversity:Main Page with your browser and look at the source of that page (the menu option is commonly called View source oder Page source in graphic browsers).