(whoops, forgot to actually return the data)
[mw] / src / mw / api.py
index 135c2a1e56deb4e529d9dbf7ec863c75fd09ff5e..59a3947a81f33a45f7c0ac5c494b33473efcca97 100644 (file)
@@ -1,6 +1,6 @@
 ###
 # mw - VCS-like nonsense for MediaWiki websites
-# Copyright (C) 2009  Ian Weller <ian@ianweller.org>
+# Copyright (C) 2010  Ian Weller <ian@ianweller.org>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# with this program.  If not, see <http://www.gnu.org/licenses/>.
 ###
 
 import cookielib
@@ -24,7 +23,9 @@ from StringIO import StringIO
 import urllib
 import urllib2
 
+
 class API(object):
+
     def __init__(self, api_url):
         self.api_url = api_url
         self.cookiejar = cookielib.CookieJar()
@@ -43,7 +44,10 @@ class API(object):
             data = gzipper.read()
         else:
             data = response.read()
-        return json.loads(data)
+        the_data = json.loads(data)
+        if 'error' in the_data.keys():
+            raise APIError(the_data['error']['info'])
+        return the_data
 
     def limits(self, low, high):
         if self._high_limits == None:
@@ -56,3 +60,24 @@ class API(object):
             return high
         else:
             return low
+
+
+class APIError(Exception):
+
+    def __init__(self, info):
+        self.info = info
+
+    def __str__(self):
+        return self.info
+
+
+def pagename_to_filename(name):
+    name = name.replace(' ', '_')
+    name = name.replace('/', '!')
+    return name
+
+
+def filename_to_pagename(name):
+    name = name.replace('!', '/')
+    name = name.replace('_', ' ')
+    return name

Benjamin Mako Hill || Want to submit a patch?