diff --git a/tweepy/binder.py b/tweepy/binder.py index 979b82be3..e62e9c521 100644 --- a/tweepy/binder.py +++ b/tweepy/binder.py @@ -156,8 +156,7 @@ def execute(self): self.api.last_response = resp if resp.status != 200: try: - #TODO: parse error message - raise Exception + error_msg = self.api.parser.parse_error(self, resp.read()) except Exception: error_msg = "Twitter error response: status code = %s" % resp.status raise TweepError(error_msg) diff --git a/tweepy/parsers.py b/tweepy/parsers.py index de6ce1bc7..8599501b2 100644 --- a/tweepy/parsers.py +++ b/tweepy/parsers.py @@ -16,6 +16,14 @@ def parse(self, method, payload): """ raise NotImplementedError + def parse_error(self, payload): + """ + Parse the error message from payload. + If unable to parse the message, throw an exception + and default error message will be used. + """ + raise NotImplementedError + class JSONParser(Parser): @@ -36,6 +44,9 @@ def parse(self, method, payload): else: return json + def parse_error(self, payload): + return self.json_lib.loads(payload)['error'] + class ModelParser(JSONParser):