--- /dev/null
+From de97f3ccde6527ac63bde701ae759291d93d1aa4 Mon Sep 17 00:00:00 2001
+From: Ian Weller <ian@ianweller.org>
+Date: Fri, 4 Feb 2011 23:58:26 -0600
+Subject: Refactor normalize_api_url
+
+---
+ simplemediawiki.py | 42 +++++++++++++++++++++++-------------------
+ 1 files changed, 23 insertions(+), 19 deletions(-)
+
+diff --git a/simplemediawiki.py b/simplemediawiki.py
+index ff879ed..e123a5b 100644
+--- a/simplemediawiki.py
++++ b/simplemediawiki.py
+@@ -101,7 +101,28 @@ class MediaWiki():
+ returns that URL, while also helpfully setting this object's API URL to
+ it. If it can't magically conjure an API endpoint, it returns False.
+ """
+- data, data_json = self._normalize_api_url_tester(self._api_url)
++ def tester(self, api_url):
++ """
++ Attempts to fetch general information about the MediaWiki instance
++ in order to test whether the given URL will return JSON.
++ """
++ data = self._fetch_http(api_url, {'action': 'query',
++ 'meta': 'siteinfo',
++ 'siprop': 'general',
++ 'format': 'json'})
++ try:
++ data_json = json.loads(data)
++ # may as well set the version
++ try:
++ version_string = data_json['query']['general']['generator']
++ self._mediawiki_version = version_string.split(' ', 1)[1]
++ except KeyError:
++ pass
++ return (data, data_json)
++ except ValueError:
++ return (data, None)
++
++ data, data_json = tester(self, self._api_url)
+ if data_json:
+ return self._api_url
+ else:
+@@ -109,30 +130,13 @@ class MediaWiki():
+ if 'index.php' in self._api_url:
+ test_api_url = self._api_url.split('index.php')[0] + 'api.php'
+ print test_api_url
+- test_data, test_data_json = \
+- self._normalize_api_url_tester(test_api_url)
++ test_data, test_data_json = tester(self, test_api_url)
+ print (test_data, test_data_json)
+ if test_data_json:
+ self._api_url = test_api_url
+ return self._api_url
+ return False
+
+- def _normalize_api_url_tester(self, api_url):
+- data = self._fetch_http(api_url, {'action': 'query',
+- 'meta': 'siteinfo',
+- 'siprop': 'general',
+- 'format': 'json'})
+- try:
+- data_json = json.loads(data)
+- # may as well set the version
+- try:
+- version_string = data_json['query']['general']['generator']
+- self._mediawiki_version = version_string.split(' ', 1)[1]
+- except KeyError:
+- pass
+- return (data, data_json)
+- except ValueError:
+- return (data, None)
+
+ def login(self, user, passwd, token=None):
+ """
+--
+1.7.2.3
+