def _handle_HTTP_error(self, response): if response.code == 420: # We've been rate-limited. if self.reconnect_delay < self.RECONNECT_DELAY_RATE_LIMIT: self.reconnect_delay = self.RECONNECT_DELAY_RATE_LIMIT self.connection_lost(Failure(RateLimitedError(response.code))) else: # General HTTP error. self.connection_lost(Failure(TwitterAPIError(response.code)))
def _404(self): raise TwitterAPIError( 404, "Not Found", json.dumps({ "errors": [ { "message": "Sorry, that page does not exist", "code": 34 }, ] }))
def direct_messages_show(self, id): dm = self._dm_or_404(id) if (dm.recipient_id_str != self._user_id_str and dm.sender_id_str != self._user_id_str): # The actual response given to us by Twitter raise TwitterAPIError(403, "Forbidden", json.dumps({ "errors": [{ "message": "There was an error sending your message: .", "code": 151 }]})) return self._twitter_data.to_dicts(dm)
def direct_messages_destroy(self, id, include_entities=None): dm = self._dm_or_404(id) if (dm.recipient_id_str != self._user_id_str and dm.sender_id_str != self._user_id_str): # The actual response given to us by Twitter raise TwitterAPIError(403, "Forbidden", json.dumps({ "errors": [{ "message": "There was an error sending your message: .", "code": 151 }]})) del self._twitter_data.dms[dm.id_str] return dm.to_dict( self._twitter_data, include_entities=include_entities)
def direct_messages_new(self, text, user_id=None, screen_name=None): if user_id is None and screen_name is None: raise TwitterAPIError(400, "Bad Request", json.dumps({ "errors": [{ "message": ( "Recipient (user, screen name, or id) " "parameter is missing."), "code": 38 }]})) if user_id is None: user = self._twitter_data.get_user_by_screen_name(screen_name) user_id = user.id_str dm = self._twitter_data.new_dm(text, self._user_id_str, user_id) return dm.to_dict(self._twitter_data)
def friendships_create(self, user_id=None, screen_name=None, follow=None): if follow is not None: raise NotImplementedError("follow param") user = None if screen_name is not None: user = self._twitter_data.get_user_by_screen_name(screen_name) elif user_id is not None: user = self._twitter_data.get_user(user_id) if user is None: # The actual response given to us by Twitter if no user was found # or if both user_id and screen_name were not specified raise TwitterAPIError(403, "Forbidden", json.dumps({ "errors": [{ "message": "Cannot find specified user.", "code": 108 }]})) self._twitter_data.add_follow(self._user_id_str, user.id_str) return user.to_dict(self._twitter_data)
def _handle_error(self, response): if response.code < 400: return response return _read_body(response).addCallback(lambda body: Failure( TwitterAPIError(response.code, response=body)))