aboutsummaryrefslogtreecommitdiffstats
path: root/github3/errors.py
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2011-11-04 01:21:50 +0100
committerDavid Medina <davidmedina9@gmail.com>2011-11-04 01:21:50 +0100
commitbb540725ce15dcafd5ac5e5bb93e5a232ff4f33a (patch)
treedcda3ab57515f3bf7e46d98fc819737d458e4601 /github3/errors.py
parentComplete AuthUser handler (diff)
downloadpython-github3-bb540725ce15dcafd5ac5e5bb93e5a232ff4f33a.tar.xz
python-github3-bb540725ce15dcafd5ac5e5bb93e5a232ff4f33a.zip
Refactor base to handler design
Diffstat (limited to 'github3/errors.py')
-rw-r--r--github3/errors.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/github3/errors.py b/github3/errors.py
new file mode 100644
index 0000000..6932360
--- /dev/null
+++ b/github3/errors.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+#
+# author: David Medina
+
+import json
+import github3.exceptions as exceptions
+
+class GithubError(object):
+ """ Handler for API errors """
+
+ def __init__(self, response):
+ self._parser = json
+ self.status_code = response.status_code
+ self.debug = self._parser.loads(response.content)
+
+ def error_400(self):
+ return exceptions.BadRequest("400 - %s" % self.debug.get('message'))
+
+ def error_404(self)
+ return exceptions.NotFound("404 - %s" % self.debug.get('message'))
+
+ def error_422(self):
+ errors = self.debug.get('errors')
+ if errors:
+ errors = ['{resource}: {code} => {field}'.format(**error)
+ for error in errors]
+ return exceptions.UnprocessableEntity(
+ '422 - %s %s' % (self.debug.get('message'), errors))
+
+ def process(self):
+ raise_error = getattr(self, 'error_%s' % self.status_code, False)
+ if raise_error:
+ raise raise_error()