merge patched into master
[python-simplemediawiki.debian] / debian / patches / 0003-Refactor-normalize_api_url.patch
diff --git a/debian/patches/0003-Refactor-normalize_api_url.patch b/debian/patches/0003-Refactor-normalize_api_url.patch
new file mode 100644 (file)
index 0000000..8a2566b
--- /dev/null
@@ -0,0 +1,78 @@
+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
+

Benjamin Mako Hill || Want to submit a patch?